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.
Cosgrove::Utils
module.$register <account> [chain]
- associate account
with your Discord user (chain
default steem
)$verify <account> [chain]
- check account
association with Discord users (chain
default steem
)$upvote [url]
- upvote from cosgrove; empty or ^
to upvote last steemit linkdynamic
- 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.on_success_upvote_job
which can be used to, for example, reply to the post after being upvoted.operators
to keep track of steem accounts that can do things like block upvotes (by blockchain mute).$ gem install cosgrove
... or in your Gemfile
source 'https://rubygems.org'
gem 'cosgrove'
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
:steem_engine_api_url: https://api.steem-engine.com/rpc
:hive_engine_api_url: https://api.hive-engine.com/rpc
:hive_account:
:hive_posting_wif:
:hive_api_url: https://api.steem.house
: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)
application
and create an app bot user
.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=153600token
and client_id
in your bot constructor (see below).Some features provided by cosgrove
require access to HiveSQL, which is a Microsoft SQL database containing all the Steem blockchain data.
Please note:
If you intend to use HiveSQL, you can provide the credentials in authorize-hive-sql.sh
, then use this terminal command to enable HiveSQL just before running your bot. Copy the example example-authorize-hive-sql.sh
and add your credentials:
source path/to/authorize-hive-sql.sh
Features that currently require HiveSQL:
$mvests
command$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: $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
Here's an example of a bot that does Engine API calls when you type: $bal ENG alice
require 'cosgrove'
include Cosgrove::Utils
bot = Cosgrove::Bot.new
bot.command :bal do |event, *args|
symbol = args[0].strip.upcase
account = args[0].strip.downcase
params = {
query: {
symbol: symbol,
account: account
}
}
result = steem_engine_contracts(:findOne, params)
"#{result['balance']}'s '#{result['symbol']}: #{result['balance']}"
end
bot.run
git clone git@github.com:steem-third-party/cosgrove.git
cd cosgrove
rake
HELL_ENABLED=true rake
See my previous Ruby How To posts in: #radiator #ruby
Also see:
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.
I don't believe in intellectual "property". If you do, consider Cosgrove as licensed under a Creative Commons License.