Cosgrove: Database Fixes

in #radiator5 years ago

This is a minor update, mainly to remove references to the old database scheme so that SteemSQL is the only adapter. Prior to this, SteemData was the primary database source, which is long gone at this point.


Cosgrove is a STEEM Centric Discord Bot Framework that allows you to write your own Discord bots that interact with the STEEM blockchain.

One example of a bot that uses this framework is @banjo on SteemSpeak.

New features

  • Support for SteemSQL (replacing SteemData; dropped mongodb support)
  • Optimized interactive messages to update as data is acquired in realtime
  • Bug fixes
  • Gem updates.

Features

  • Registration
    • $register <account> [chain] - associate account with your Discord user (chain default steem)
  • Verification
    • $verify <account> [chain] - check account association with Discord users (chain default steem)
  • Up Voting
    • $upvote [url] - upvote from cosgrove; empty or ^ to upvote last steemit link
    • The ability for each discord channel to have its own upvote weight, as well as have a default. Upvote voting weight can be:
      • dynamic - uses the bot's current voting recharge percent as the upvote percent.
      • upvote_rules - uses channel specific rules.
      • 100.00 % - can be any valid voting percentage.
      • disable_comment_voting - only posts can get votes.
    • CommentJob for creating automated replies.
    • Callback on_success_upvote_job which can be used to, for example, reply to the post after being upvoted.
    • Market data now uses Bittrex instead of Poloniex.
    • operators to keep track of steem accounts that can do things like block upvotes (by blockchain mute).

Installation

$ gem install cosgrove

... or in your Gemfile

source 'https://rubygems.org'

gem 'cosgrove'

Setup

Add a config file to your ruby project called config.yml:

:cosgrove:
  :token: 
  :client_id: 
  :secure: set this
  :operators: <account names seperated by space>
  :upvote_weight: upvote_rules
  :upvote_rules:
    :channels:
      :default:
        :upvote_weight: 50.00 %
      :general_text:
        :channel_id: <Your Favorite Channel ID>
        :upvote_weight: 100.00 %
        :disable_comment_voting: true
:chain:
  :steem_account: 
  :steem_posting_wif: 
  :steem_api_url: https://api.steemit.com
:discord:
  :log_mode: info

You will need to request a token and client_id from Discord (see below).

Provide the accounts and wif private postings keys if you want your bot to upvote posts.

You should change the secure key using the output of:

SecureRandom.hex(32)

Bot Registration

  1. Request a new bot here: https://discordapp.com/developers/applications/me#top
  2. Register an application and create an app bot user.
  3. Replace APP_CLIENT_ID with the App's Client ID in this URL: https://discordapp.com/oauth2/authorize?&client_id=APP_CLIENT_ID&scope=bot&permissions=153600
  4. Give that URL to the Discord server/guild owner and have them authorize the bot.
  5. Set the token and client_id in your bot constructor (see below).

SteemSQL

Some features provided by cosgrove require access to SteemSQL, which is a Microsoft SQL database containing all the Steem blockchain data.

Please note:

SteemSQL has moved to a monthly subscription model and the default free account/password “steemit/steemit” has been disabled.

If you intend to use SteemSQL, you can provide the credentials in authorize-steem-sql.sh, then use this terminal command to enable SteemSQL just before running your bot. Copy the example example-authorize-steem-sql.sh and add your credentials:

source path/to/authorize-steem-sql.sh

Features that currently require SteemSQL:

  • Details in $mvests command
  • Any command that tries to suggest account names
  • $upvote (when checking for dailly limits)

Usage

Cosgrove is based on discordrb, see: https://github.com/meew0/discordrb

All features offered by discordrb are available in Cosgrove. In addition, Cosgrove comes with pre-defined commands. See them by typing: $help

You can add you features thusly:

require 'cosgrove'

bot = Cosgrove::Bot.new

bot.message(with_text: 'Ping!') do |event|
  event.respond 'Pong!'
end

bot.run

Tests

  • Clone the client repository into a directory of your choice:
  • Navigate into the new folder
    • cd cosgrove
  • Basic tests can be invoked as follows:
    • rake
  • To run tests with parallelization and local code coverage:
    • HELL_ENABLED=true rake



See my previous Ruby How To posts in: #radiator #ruby

Also see:

Get in touch!

If you're using Cosgrove, I'd love to hear from you. Drop me a line and tell me what you think! I'm @inertia on STEEM and Discord.

License

I don't believe in intellectual "property". If you do, consider Cosgrove as licensed under a Creative Commons CC0 License.

Sort:  

whys it called cosgrove? did he remember stuff?

It’s called cosgrove because that was the next name in my alphabetic naming scheme I used to go off of (cosgrove came after banjo).

Wow! It is a great innovation and a great plus to the steemit ecosystem.

Cosgrove have got very unique and great features that will help in community with the steem blockchain.

I think this is going to be interesting. Just getting to know about it

Hi @inertia!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 6.571 which ranks you at #148 across all Steem accounts.
Your rank has dropped 2 places in the last three days (old rank 146).

In our last Algorithmic Curation Round, consisting of 203 contributions, your post is ranked at #116.

Evaluation of your UA score:
  • You've built up a nice network.
  • The readers appreciate your great work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

Congratulations @inertia! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 4000 replies. Your next target is to reach 4250 replies.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Hi, @inertia!

You just got a 1.23% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.