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.
- Support for SteemApi (replacing SteemData)
- Optimized interactive messages to update as data is acquired
- Gem updates.
$register <account> [chain]- associate
accountwith your Discord user (
$verify <account> [chain]- check
accountassociation with Discord users (
- 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.
CommentJobfor creating automated replies.
on_success_upvote_jobwhich can be used to, for example, reply to the post after being upvoted.
- Market data now uses Bittrex instead of Poloniex.
operatorsto keep track of steem accounts that can do things like block upvotes (by blockchain mute).
$ gem install cosgrove
... or in your
source 'https://rubygems.org' gem 'cosgrove'
Add a config file to your
ruby project called
: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
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:
- Request a new bot here: https://discordapp.com/developers/applications/me#top
- Register an
applicationand create an
app bot user.
APP_CLIENT_IDwith the App's Client ID in this URL: https://discordapp.com/oauth2/authorize?&client_id=APP_CLIENT_ID&scope=bot&permissions=153600
- Give that URL to the Discord server/guild owner and have them authorize the bot.
- Set the
client_idin your bot constructor (see below).
Some features provided by
cosgrove require access to SteemSQL, which is a Microsoft SQL database containing all the Steem blockchain data.
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:
Features that currently require SteemSQL:
- Details in
- Any command that tries to suggest account names
$upvote(when checking for dailly limits)
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:
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
- Clone the client repository into a directory of your choice:
git clone firstname.lastname@example.org:steem-third-party/cosgrove.git
- Navigate into the new folder
- Basic tests can be invoked as follows:
- To run tests with parallelization and local code coverage:
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.