botup 0.2.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: 1ff5e5ebf1b3fe664afda09447d2d6222a040f7c
4
- data.tar.gz: 2dfd7eead22e9ff7ca90b4ce105fd5b04e5d599d
3
+ metadata.gz: 3c603c0ddf02ac224105e1b3a0f9749ba8ed118b
4
+ data.tar.gz: 84b3c8721dd37268f33cf0e04e176e6ae7539e79
5
5
  SHA512:
6
- metadata.gz: 3647400ec02cd3ff27779ac5919533fceed072b7eab9f4bcc3ed82ecbfa9b0162f587d4d4dcfa849b782d6c633fd03b46152c5f82d9fa829c3e31435018dffc5
7
- data.tar.gz: 48b0c2aef0eef38712903aa2c5a911e023f189d70d6700c038d268c42f368180eca98c620a67000b929747149806d5db4435bfed39e5f14ee7e9bef94718b8dc
6
+ metadata.gz: 1a322d7667d52598815b3b3c4eb51cfee014d853a9c3d5eec100363fbbb882aa694a3e236c34c28f2cc68c9358ad5d2ece2604168c7e644276248d10725f89ad
7
+ data.tar.gz: 8616548bbd8b66761bb906cff83a0118d4336ed07dd37e73ac4738a2d83e90baef2c40e5b281b1e78383424fe0c1bb30ee623eb1113b4d0852a5778aa17f654c
@@ -1,5 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative '<%= "../lib/#{snake_case_name}" %>'
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ Bundler.setup
6
+
7
+ require '<%= "./lib/#{snake_case_name}" %>'
4
8
 
5
9
  <%= class_name %>.start_client
@@ -1 +1 @@
1
- bot_token: 'YOUR_TOKEN_GOES_HERE'
1
+ bot_token: <%= ENV['YOUR_TELEGRAM_TOKEN'] %>
@@ -8,20 +8,32 @@ module <%= class_name %>
8
8
 
9
9
  def start
10
10
  begin
11
- Telegram::Bot::Client.run(token) do |bot|
12
- bot.listen do |message|
13
- if message.text
14
- messenger = Messenger.new(api: bot.api, chat_id: message.chat.id)
15
- response = CommandsManager.new(message: message, messenger: messenger).call
16
- messenger.send_text(response)
17
- end
18
- end
19
- end
20
- rescue Telegram::Bot::Exceptions::ResponseError => e
21
- puts e
11
+ respond
12
+ rescue Telegram::Bot::Exceptions::ResponseError => exception
13
+ puts exception
22
14
  sleep 1
23
15
  retry # run again on telegram server error
24
16
  end
25
17
  end
18
+
19
+ private
20
+
21
+ def run_client(&block)
22
+ Telegram::Bot::Client.run(token) do |bot|
23
+ yield bot if block_given?
24
+ end
25
+ end
26
+
27
+ def respond
28
+ run_client do |bot|
29
+ bot.listen do |message|
30
+ Responder.new(bot.api, message).call if message.text
31
+ end
32
+ end
33
+ end
34
+
35
+ def get_updates(bot, next_offset)
36
+ bot.api.getUpdates(offset: next_offset, timeout: 20)
37
+ end
26
38
  end
27
39
  end
@@ -1,5 +1,3 @@
1
- require_relative 'commands_keeper'
2
-
3
1
  module <%= class_name %>
4
2
  class CommandsManager
5
3
  include CommandsKeeper
@@ -0,0 +1,23 @@
1
+ module <%= class_name %>
2
+ module Configurator
3
+ CONFIG_PATH = 'config/config.yml'.freeze
4
+
5
+ module_function
6
+
7
+ def bot_token
8
+ loaded['bot_token']
9
+ end
10
+
11
+ def loaded
12
+ YAML.load(erb_result)
13
+ end
14
+
15
+ def yaml_file
16
+ File.read(CONFIG_PATH)
17
+ end
18
+
19
+ def erb_result
20
+ ERB.new(yaml_file).result
21
+ end
22
+ end
23
+ end
@@ -3,16 +3,16 @@ require 'yaml'
3
3
 
4
4
  $:.unshift("#{Dir.pwd}/lib")
5
5
 
6
+ require '<%= snake_case_name %>/configurator'
6
7
  require '<%= snake_case_name %>/client'
7
8
  require '<%= snake_case_name %>/messenger'
8
9
  require '<%= snake_case_name %>/message_parser'
9
10
  require '<%= snake_case_name %>/commands_keeper'
10
11
  require '<%= snake_case_name %>/commands_manager'
12
+ require '<%= snake_case_name %>/responder'
11
13
 
12
14
  module <%= class_name %>
13
- CONFIGURATION = YAML.load_file("#{Dir.pwd}/config/config.yml")
14
-
15
- def self.start_client
16
- Client.new(CONFIGURATION['bot_token']).start
17
- end
15
+ def self.start_client
16
+ Client.new(Configurator.bot_token).start
17
+ end
18
18
  end
@@ -17,9 +17,17 @@ module <%= class_name %>
17
17
  private
18
18
 
19
19
  def parse_message
20
- if message.text && message.text[0] == '/' && message.text.length > 1
20
+ if message_present? && message_starts_with_slash?
21
21
  message.text[1..-1].split(' ')
22
22
  end
23
23
  end
24
+
25
+ def message_present?
26
+ message.text && message.text.length > 1
27
+ end
28
+
29
+ def message_starts_with_slash?
30
+ message.text[0] == '/'
31
+ end
24
32
  end
25
33
  end
@@ -0,0 +1,23 @@
1
+ module <%= class_name %>
2
+ class Responder
3
+ attr_reader :api, :message
4
+
5
+ def initialize(api, message)
6
+ @api, @message = api, message
7
+ end
8
+
9
+ def call
10
+ messenger.send_text(parsed_response)
11
+ end
12
+
13
+ private
14
+
15
+ def messenger
16
+ @messenger ||= Messenger.new(api: api, chat_id: message.chat.id)
17
+ end
18
+
19
+ def parsed_response
20
+ @parsed_response ||= CommandsManager.new(message: message, messenger: messenger).call
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Botup
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: botup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Shakirov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-19 00:00:00.000000000 Z
11
+ date: 2016-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -49,9 +49,11 @@ files:
49
49
  - lib/botup/templates/client.erb
50
50
  - lib/botup/templates/commands_keeper.erb
51
51
  - lib/botup/templates/commands_manager.erb
52
+ - lib/botup/templates/configurator.erb
52
53
  - lib/botup/templates/core_file.erb
53
54
  - lib/botup/templates/message_parser.erb
54
55
  - lib/botup/templates/messenger.erb
56
+ - lib/botup/templates/responder.erb
55
57
  - lib/botup/version.rb
56
58
  homepage: https://github.com/vaihtovirta/botup
57
59
  licenses:
@@ -73,9 +75,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
75
  version: '0'
74
76
  requirements: []
75
77
  rubyforge_project:
76
- rubygems_version: 2.4.5
78
+ rubygems_version: 2.5.1
77
79
  signing_key:
78
80
  specification_version: 4
79
81
  summary: Telegram bot boilerplate generator
80
82
  test_files: []
81
- has_rdoc: