Barrymore
Barrymore - is a DSL for defining chat bot commands (like telegram bot
commands).
To create telegram bot you will need to use bot api gem (like telegram-bot-ruby).
Installation
Add this line to your application's Gemfile:
gem 'barrymore'
And then execute:
$ bundle
Or install it yourself as:
$ gem install
Usage
This is an example of usage Barrymore for telegram bot (using gem telegram-bot-ruby.
But Barrymore can be used for whatever chats you want.
For example, specs are written without any
chat at all.
require 'telegram/bot'
require 'barrymore'
class MyBot < Telegram::Bot::Client
include Barrymore
#
# /start
#
define_command('/start') do |msg|
if chat_data(msg)[:started_at]
api.(chat_id: msg.chat, text: 'We met already')
else
set_chat_data(msg, started_at: Time.now)
api.(chat_id: msg.chat, text: "Hello, #{msg.data[:name]}!")
end
end
#
# /google
#
define_command('/google') do |msg|
start_command_processing(msg)
api.(chat_id: msg.chat, text: 'What do you want to google?')
end
define_command_continuation('/google') do |msg|
stop_command_processing(msg)
api.(chat_id: msg.chat, text: "http://lmgtfy.com/?q=#{URI.escape msg.text}")
end
# msg [Barrymore::Message]
def (msg)
if command_in_progress?(msg)
continue_command(msg)
elsif command_defined?(msg)
execute_command(msg)
else
api.(chat_id: msg.chat, text: 'wrong command!')
end
end
# converts telegram message to barrymore message
def ()
Message.new text: .text,
chat: .chat.id,
data: { name: .from.first_name }
end
end
token = raise 'REPLACE IT WITH YOUR TOKEN'
MyBot.run(token) do |bot|
bot.listen do ||
= bot.()
bot.()
end
end
Development
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/Nondv/barrymore.
License
The gem is available as open source under the terms of the MIT License.