action_bot 0.1.14 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72acd24763d4629b5406183a4d5fcc6238bc2489bdb10dc0a293c10623a423b1
4
- data.tar.gz: f5328428493ff5cefb703b56f93db1de1b07adf977b3db39e1e70b85e806dc4b
3
+ metadata.gz: f267e3093741e98e9812f5a8e43871e3fe03a0634d58972cb86dd5cc3834230b
4
+ data.tar.gz: 01767005c9771cf1395453ec27ae3f7cd6525a8db0a5413668bf3322e717de97
5
5
  SHA512:
6
- metadata.gz: 33b4be8d9188a1c7a5b810ae6692262ea82dc51acf8f298aaca31982560197552c830bc2fc99a49e1f68cd78729cb4aae5d325efebea6ad33aa9b42454be4d7d
7
- data.tar.gz: b825b4fcddca1f57dc0f4150903966d964b76ba7098ff9550c5e52233b22b3e84b48713a2adff7a054a9559cc8510b26d7d39abd2f241272a39e37b26bf3be39
6
+ metadata.gz: 8b403d696bc7d517a88137f65ebde2c11207eadc0b38296a1b35b3f4629a87134751806c75e2421f1df6df21b26c4399fef5f40b030e4f5cfbef5d6d7d273973
7
+ data.tar.gz: fc9f146bbec3739c4c7f7967a797d50722e45acefca89dc73e6763f9ccf23ceaae41b86e5f0224a071190e32eb3f5d8fd04316f1af2ee0b7354214ed11429872
@@ -12,7 +12,7 @@ class AppConfigurator
12
12
  def self.configure_db
13
13
  DBConfigurator.configure do |configuration|
14
14
  configuration.db_url = config.db_url
15
- end
15
+ end if config.db_url
16
16
  end
17
17
 
18
18
  def self.configure_i18n
@@ -1,4 +1,6 @@
1
+ spec = Gem::Specification.find_by_name 'action_bot'
2
+
1
3
  desc 'Generate files for the bot'
2
4
  task :bot_scaffold do
3
- FileUtils.cp_r 'scaffolds/.', "#{Dir.pwd}"
5
+ FileUtils.cp_r "#{spec.gem_dir}/scaffolds/.", "#{Dir.pwd}"
4
6
  end
@@ -0,0 +1,7 @@
1
+ require 'action_bot'
2
+
3
+ require_relative '../config/configuration'
4
+ require_relative '../bots/example_long_polling_bot'
5
+
6
+
7
+ ExampleLongPollingBot.call
@@ -0,0 +1,20 @@
1
+ require 'sinatra'
2
+ require 'action_bot'
3
+
4
+ require_relative '../config/configuration'
5
+ require_relative '../bots/example_webhook_bot'
6
+ use Rack::Logger
7
+
8
+ helpers do
9
+ def logger
10
+ request.logger
11
+ end
12
+ end
13
+
14
+ # Telegram requires GET endpoint to setup a webhook
15
+ get '/webhook' do
16
+ end
17
+
18
+ post '/webhook' do
19
+ # Do stuff with request here
20
+ end
@@ -0,0 +1,30 @@
1
+ class ExampleLongPollingBot < ActionBot::Base
2
+ def call
3
+ bot_runner.run do |bot|
4
+ ActionBot::Base.configure do |config|
5
+ config.bot = bot
6
+ end
7
+
8
+ bot.listen do |message|
9
+ @message = message
10
+ run
11
+ end
12
+ end
13
+ end
14
+
15
+ def self.call
16
+ new.call
17
+ end
18
+
19
+ def run
20
+ on @message == 'hello_world', hello: :world, params: {
21
+ tg_chat_id: tg_chat_id
22
+ }
23
+ end
24
+
25
+ private
26
+
27
+ def tg_chat_id
28
+ @message.chat.id
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ class ExampleWebhookBot < ActionBot::Base
2
+ def initialize
3
+ @api = Telegram::Bot::Api.new(AppConfigurator.config.token)
4
+ ActionBot::Base.configure do |config|
5
+ config.api = @api
6
+ end
7
+ end
8
+
9
+ def run(message)
10
+ @message = message
11
+
12
+ return unless message_legal?
13
+ catch(:done) do
14
+ on message == 'hello_world', hello: :world
15
+ end
16
+ end
17
+
18
+ def message_legal?
19
+ @message.respond_to?(:text) && @message.text
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ AppConfigurator.configure do |config|
2
+ # Configure bot
3
+ config.token = begin
4
+ YAML::load(IO.read('config/secrets/token.yml'))['telegram_bot_token']
5
+ rescue Errno::ENOENT
6
+ ENV["TOKEN"]
7
+ end
8
+
9
+ # Configure database
10
+ # config.db_url = begin
11
+ # YAML::load(IO.read('config/secrets/database.yml'))["database_url"]
12
+ # rescue Errno::ENOENT
13
+ # ENV["DATABASE_URL"]
14
+ # end
15
+
16
+ # Configure i18n
17
+ config.i18n_locale = :en
18
+ config.i18n_load_path = Dir['config/secrets/locales.yml']
19
+ config.i18n_available_locales = %i[en]
20
+ end
@@ -0,0 +1 @@
1
+ database_url: postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
@@ -0,0 +1,2 @@
1
+ en:
2
+ hello_world: "Hello world!"
@@ -0,0 +1 @@
1
+ telegram_bot_token: your-tg-bot-token
@@ -0,0 +1,2 @@
1
+ class BotsController < ActionBot::Controller
2
+ end
@@ -0,0 +1,5 @@
1
+ class HelloController
2
+ def world
3
+ notify(params[:tg_chat_id], t('hello_world'))
4
+ end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Barseek
@@ -126,6 +126,16 @@ files:
126
126
  - lib/configuration/configurators/db_configurator.rb
127
127
  - lib/configuration/configurators/i18n_configurator.rb
128
128
  - lib/tasks/bot_scaffold.rake
129
+ - scaffolds/bin/example_long_polling_bot_runner.rb
130
+ - scaffolds/bin/example_webhook_bot_runner.rb
131
+ - scaffolds/bots/example_long_polling_bot.rb
132
+ - scaffolds/bots/example_webhook_bot.rb
133
+ - scaffolds/config/configuration.rb
134
+ - scaffolds/config/secrets/database.yml
135
+ - scaffolds/config/secrets/locales.yml
136
+ - scaffolds/config/secrets/token.yml
137
+ - scaffolds/controllers/bots_controller.rb
138
+ - scaffolds/controllers/hello_controller.rb
129
139
  homepage: https://rubygems.org/gems/hola
130
140
  licenses:
131
141
  - MIT