telegram_bot_ruby 0.1.3 → 0.1.5

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: 7bb9b0f59bc8bfb6f12dad74e1ac411b9c8779b4
4
- data.tar.gz: 5983a8a1acbb103e17f7ceb2f4e17c7157efdf9e
3
+ metadata.gz: d3f04284d4adc0dc0ea36b79f436306d14e575a6
4
+ data.tar.gz: b4188c3e144dca7c6e7d69228d475c606b8ca2c2
5
5
  SHA512:
6
- metadata.gz: 2baa92312177181aa1b91d5056fe60c730ac486aa24ec63581e4863460b39545b4fedb2aeab4c1415510c35912d9a7b9d9126421fa70f350aefb43817b0e887d
7
- data.tar.gz: 3b93fb3997d370af5ce6c7d33b9aef530cb54f607713a49a63f2b2a69a3b33c54ce8dcc0beec0a16141a0b54bfd7b9d4103969c85f8ffea0448a26ab87b22103
6
+ metadata.gz: 54eac803d445dd3c9a0d4168d182e2223c8b633c333489b872891807ee056b23bd856721b64f43ce2833aa44bd96edf6756954a8ba95ffbab4fa537ac49f090b
7
+ data.tar.gz: 56e8965c98679340262261e7eb616c216380d049372d9f9568e8867dd5f688f838ce82b583f3698375134b7d09e3a9f7806defe91fd688a6681143ce93a1aa59
data/README.md CHANGED
@@ -40,26 +40,26 @@ bot.listen(method: :poll, interval: 1)
40
40
  ### Set up update listeners
41
41
 
42
42
  ```ruby
43
- bot.on_command 'ping' do # /ping
43
+ bot.on :command, 'ping' do # /ping
44
44
  reply 'pong'
45
45
  end
46
46
 
47
- bot.on_command 'plus' do |num1, num2| # /plus 1 2
47
+ bot.on :command, 'plus' do |num1, num2| # /plus 1 2
48
48
  reply (num1.to_i + num2.to_i).to_s
49
49
  end
50
50
 
51
- bot.on_text 'ping' do # plain 'ping'
51
+ bot.on :text 'ping' do # plain 'ping'
52
52
  send_message 'pong'
53
53
  end
54
54
 
55
55
  # with block: false, message will keep passing through other listeners
56
- bot.on_text /(\d+)\+(\d+)\=\?/, block: false do |n1, n2|
56
+ bot.on :text, /(\d+)\+(\d+)\=\?/, block: false do |n1, n2|
57
57
  send_chat_action :typing
58
58
  send_message (n1.to_i + n2.to_i).to_s
59
59
  end
60
60
 
61
61
  # a simple history logger
62
- bot.anything do |msg|
62
+ bot.on :anything do |msg|
63
63
  Database.save [msg.from.username, msg.text] if !msg.text.empty?
64
64
  end
65
65
  ```
@@ -2,7 +2,7 @@ require 'ostruct'
2
2
  require 'active_support/inflector'
3
3
 
4
4
  require_relative 'matcher'
5
- require_relative 'blank_slate'
5
+ require_relative 'message_proxy'
6
6
 
7
7
  class TelegramBot
8
8
  module EventHandler
@@ -51,23 +51,14 @@ class TelegramBot
51
51
  end
52
52
 
53
53
  def handle(msg)
54
- env = BlankSlate.new
55
- self.extend_env(env)
56
- msg.extend_env(env)
57
-
58
54
  @handlers.each do |hndlr|
59
55
  next unless hndlr === msg
60
56
 
61
- hndlr.matcher.extend_env(env, msg)
62
-
63
- env.extend do
64
- define_method :handler do
65
- hndlr
66
- end
67
- end
57
+ proxy = MessageProxy.new(self, msg, hndlr)
58
+ proxy.instance_exec(*hndlr.arguments(msg),
59
+ &hndlr.action)
68
60
 
69
- env.call(*hndlr.arguments(msg),
70
- &hndlr.action)
61
+ break unless hndlr.pass?
71
62
  end
72
63
  end
73
64
  end
@@ -1,9 +1,5 @@
1
1
  class TelegramBot
2
2
  class Matcher
3
- def env(msg)
4
- msg.extend(BasicObject.new)
5
- end
6
-
7
3
  def ===(_)
8
4
  false
9
5
  end
@@ -11,10 +7,6 @@ class TelegramBot
11
7
  def arguments(msg)
12
8
  []
13
9
  end
14
-
15
- def extend_env(obj, msg)
16
- obj
17
- end
18
10
  end
19
11
 
20
12
  class TextMatcher < Matcher
@@ -30,22 +22,6 @@ class TelegramBot
30
22
  @pattern === msg.text
31
23
  end
32
24
 
33
- def extend_env(obj, msg)
34
- obj = super
35
-
36
- if Regexp === @pattern
37
- md = @pattern.match(msg.text)
38
- obj.extend do
39
- md.names.each do |grp|
40
- value = md[grp]
41
- define_method grp { value }
42
- end
43
- end
44
- end
45
-
46
- obj
47
- end
48
-
49
25
  def arguments(msg)
50
26
  if Regexp === @pattern
51
27
  md = @pattern.match(msg.text)
@@ -77,22 +77,4 @@ class TelegramBot::Message <
77
77
  def is_reply?
78
78
  !!reply_to_message
79
79
  end
80
-
81
- def extend_env(obj)
82
- msg = self
83
- obj.instance_eval do
84
- @message = msg
85
- end
86
-
87
- members = self.members
88
-
89
- obj.extend do
90
- extend Forwardable
91
- attr_reader :message
92
- def_delegators :@message, *members
93
- def_delegators :@message, :is_forward?, :is_reply?
94
- end
95
-
96
- obj
97
- end
98
80
  end
@@ -0,0 +1,18 @@
1
+ require 'forwardable'
2
+ require_relative 'shorthand_methods'
3
+
4
+ class TelegramBot
5
+ class MessageProxy
6
+ extend Forwardable
7
+
8
+ attr_accessor :bot, :message, :matcher
9
+
10
+ def initialize(bot, message, matcher)
11
+ @bot = bot
12
+ @message = message
13
+ @matcher = matcher
14
+ end
15
+
16
+ include TelegramBot::ShorthandMethods
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  class TelegramBot
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.5"
3
3
  end
data/lib/telegram_bot.rb CHANGED
@@ -28,19 +28,7 @@ class TelegramBot
28
28
  end
29
29
 
30
30
  def extend_env(env)
31
- telegram_bot = self
32
- env.extend do
33
- define_method :bot do
34
- telegram_bot
35
- end
36
- alias_method :client, :bot
37
-
38
- define_method :history do
39
- telegram_bot.history
40
- end
41
-
42
- include ShorthandMethods
43
- end
31
+
44
32
  end
45
33
 
46
34
  def append_history(message)
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/shouya/telegram-bot"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.required_ruby_version = '> 2.0.0'
16
+ spec.required_ruby_version = '> 2.1.0'
17
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
18
  # delete this section to allow pushing this gem to any host.
19
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegram_bot_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shou Ya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-25 00:00:00.000000000 Z
11
+ date: 2015-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -82,7 +82,6 @@ files:
82
82
  - lib/telegram_bot.rb
83
83
  - lib/telegram_bot/audio.rb
84
84
  - lib/telegram_bot/auto_from_methods.rb
85
- - lib/telegram_bot/blank_slate.rb
86
85
  - lib/telegram_bot/chat.rb
87
86
  - lib/telegram_bot/contact.rb
88
87
  - lib/telegram_bot/date.rb
@@ -93,6 +92,7 @@ files:
93
92
  - lib/telegram_bot/location.rb
94
93
  - lib/telegram_bot/matcher.rb
95
94
  - lib/telegram_bot/message.rb
95
+ - lib/telegram_bot/message_proxy.rb
96
96
  - lib/telegram_bot/objects.rb
97
97
  - lib/telegram_bot/photo_size.rb
98
98
  - lib/telegram_bot/poll_listener.rb
@@ -119,7 +119,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">"
121
121
  - !ruby/object:Gem::Version
122
- version: 2.0.0
122
+ version: 2.1.0
123
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - ">="
@@ -1,11 +0,0 @@
1
- class TelegramBot
2
- class BlankSlate < Object
3
- def extend(&block)
4
- self.singleton_class.class_eval(&block)
5
- end
6
-
7
- def call(*args, &block)
8
- self.instance_exec(*args, &block)
9
- end
10
- end
11
- end