telegram_bot_ruby 0.1.0 → 0.1.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: 2c01b6b954e0b513b8a0e29ef88b0f1554c9a50a
4
- data.tar.gz: 0b0186efea939835e34f71aa34481e723a631218
3
+ metadata.gz: 03764fdebe0159e5f6de4e5c1bd4601f9dd2b32f
4
+ data.tar.gz: de4943a43fae55a0b6e9086caf2074d7f02e2e16
5
5
  SHA512:
6
- metadata.gz: 45c73516b817ccb7d12d38fd7220221a31ddabf27d3398869adcd85ce47265a633e4e3b5a7718acc27ee595cc3588510a92d882595f3b17603c6839887957830
7
- data.tar.gz: 0d82339b0ae3fde83a6d209416862c1bbeef5dd218bcda50ec26213b885e433a7f0b07b6081b124a9dd54cd63caf795f4778d9f581950b72f8eccd87d264cf27
6
+ metadata.gz: acaee895123fccc68d3f34d837183a93f3ccc8b929c3c67abc79d7b8085b46e6fe5eb766a3eb9b15b413339bcfe6dcaa661ed239236de132c480de4e2ff188ce
7
+ data.tar.gz: 1cb669182a42939e07f0aacf94dcfe7d4357bf94f8ef7952e4b999c3cf085dbe4e6cbdee3997b67decfd2adacace57566e72ffd8737035b5d19da0a0236c3a0f
data/lib/telegram_bot.rb CHANGED
@@ -1,20 +1,20 @@
1
- require 'telegram_bot/version'
2
- require 'telegram_bot/objects'
3
- require 'telegram_bot/handler'
4
- require 'telegram_bot/request'
5
- require 'telegram_bot/request_methods'
6
- require 'telegram_bot/poll_listener'
1
+ require_relative 'telegram_bot/version'
2
+ require_relative 'telegram_bot/objects'
3
+ require_relative 'telegram_bot/handler'
4
+ require_relative 'telegram_bot/request'
5
+ require_relative 'telegram_bot/request_methods'
6
+ require_relative 'telegram_bot/poll_listener'
7
+ require_relative 'telegram_bot/shorthand_methods'
8
+
7
9
 
8
10
  class TelegramBot
9
11
  include TelegramBot::EventHandler
10
12
  include TelegramBot::Request
11
13
  include TelegramBot::RequestMethods
12
14
 
13
- attr_accessor :token, :handlers, :history
15
+ attr_accessor :history
14
16
 
15
- def initialize(history: 50, token:)
16
- @token = token
17
- @handlers = []
17
+ def initialize(history: 50)
18
18
  @history = []
19
19
  @history_length = 50
20
20
  end
@@ -38,6 +38,8 @@ class TelegramBot
38
38
  define_method :history do
39
39
  telegram_bot.history
40
40
  end
41
+
42
+ include ShorthandMethods
41
43
  end
42
44
  end
43
45
 
@@ -47,11 +49,13 @@ class TelegramBot
47
49
  end
48
50
 
49
51
  def start!
52
+ listener = nil
50
53
  case @listen[:method]
51
54
  when :poll
52
- PollListener.new(self, @listen[:interval])
55
+ listener = PollListener.new(self, @listen[:interval])
53
56
  when :webhook
54
57
  warn 'not implemented'
55
58
  end
59
+ listener.start!
56
60
  end
57
61
  end
@@ -1,6 +1,8 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::Audio <
2
4
  Struct.new(:id, :duration, :mime_type, :file_size)
3
- include AutoFromMethods
5
+ include TelegramBot::AutoFromMethods
4
6
 
5
7
  def self.hash_key_aliases
6
8
  {
@@ -3,7 +3,7 @@ class TelegramBot
3
3
  module ClassMethods
4
4
  def from(id)
5
5
  case id
6
- when self
6
+ when self, Struct
7
7
  id
8
8
  when nil
9
9
  nil
@@ -11,7 +11,7 @@ class TelegramBot
11
11
  parse(id)
12
12
  when Integer
13
13
  new(id)
14
- when others
14
+ else
15
15
  warn "unknown stuff passed in [#{id}]"
16
16
  end
17
17
  end
@@ -26,7 +26,7 @@ class TelegramBot
26
26
 
27
27
  def parse(hsh)
28
28
  obj = new(*parse_attrs(hsh))
29
- parse_extra_types
29
+ parse_extra_types(obj)
30
30
  obj
31
31
  end
32
32
 
@@ -44,13 +44,15 @@ class TelegramBot
44
44
  end
45
45
  end
46
46
 
47
- def parse_extra_types
47
+ def parse_extra_types(obj)
48
48
  extra_types.each do |attr, typ|
49
49
  case typ
50
50
  when Class
51
51
  obj[attr] = typ.from(obj[attr])
52
52
  when Array
53
- obj[attr] = obj[attr].map { |x| typ[0].from(x) }
53
+ unless obj[attr].nil?
54
+ obj[attr] = obj[attr].map { |x| typ[0].from(x) }
55
+ end
54
56
  else
55
57
  warn 'unknown type #{type}'
56
58
  end
@@ -1,5 +1,5 @@
1
- module TelegramBot
2
- class BlankSlate < BasicObject
1
+ class TelegramBot
2
+ class BlankSlate < Object
3
3
  def extend(&block)
4
4
  self.singleton_class.class_eval(&block)
5
5
  end
@@ -1,20 +1,24 @@
1
- class Chat < Struct.new(:id)
1
+ require_relative 'objects'
2
+
3
+ class TelegramBot::Chat < Struct.new(:id)
4
+ include TelegramBot::AutoFromMethods
5
+
2
6
  def self.from(id)
3
7
  case id
4
8
  when Integer
5
- Chat.new(id)
6
- when GroupChat, User
9
+ TelegramBot::Chat.new(id)
10
+ when TelegramBot::GroupChat, TelegramBot::User
7
11
  id
8
12
  when Hash
9
13
  if id.has_key? 'title'
10
- GroupChat.from(id)
14
+ TelegramBot::GroupChat.from(id)
11
15
  elsif id.has_key? 'first_name'
12
- User.from(id)
16
+ TelegramBot::User.from(id)
13
17
  else
14
- Chat.from(id['id'])
18
+ TelegramBot::Chat.from(id['id'])
15
19
  end
16
20
  else
17
- warn 'unknown chat'
21
+ super
18
22
  end
19
23
  end
20
24
  end
@@ -1,9 +1,11 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::Contact <
2
4
  Struct.new(:id,
3
5
  :phone_number,
4
6
  :first_name,
5
7
  :last_name)
6
- include AutoFromMethods
8
+ include TelegramBot::AutoFromMethods
7
9
 
8
10
  def self.hash_key_aliases
9
11
  {
@@ -1,8 +1,15 @@
1
- require 'datetime'
1
+ require_relative 'objects'
2
2
  require 'time'
3
3
 
4
- class TelegramBot::Date < Struct.new()
5
- include AutoFromMethods
4
+ class TelegramBot::Date
5
+ include TelegramBot::AutoFromMethods
6
+
7
+ def self.members
8
+ []
9
+ end
10
+ def members
11
+ self.class.members
12
+ end
6
13
 
7
14
  def self.from(date)
8
15
  case date
@@ -1,6 +1,8 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::Document <
2
4
  Struct.new(:id, :thumb, :file_name, :meme_type, :file_size)
3
- include AutoFromMethods
5
+ include TelegramBot::AutoFromMethods
4
6
 
5
7
  def self.hash_key_aliases
6
8
  {
@@ -1,5 +1,7 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::ForceReply <
2
4
  Struct.new(:force_reply,
3
5
  :selective)
4
- include AutoFromMethods
6
+ include TelegramBot::AutoFromMethods
5
7
  end
@@ -1,3 +1,5 @@
1
- class GroupChat < Struct.new(:id, :title)
2
- include AutoFromMethods
1
+ require_relative 'objects'
2
+
3
+ class TelegramBot::GroupChat < Struct.new(:id, :title)
4
+ include TelegramBot::AutoFromMethods
3
5
  end
@@ -4,10 +4,10 @@ require 'active_support/inflector'
4
4
  require_relative 'matcher'
5
5
  require_relative 'blank_slate'
6
6
 
7
- module TelegramBot
7
+ class TelegramBot
8
8
  module EventHandler
9
9
  class Handler
10
- attr_accessor :type, :action, :pass
10
+ attr_accessor :action, :pass, :matcher
11
11
 
12
12
  def initialize(matcher, action, pass)
13
13
  @matcher = matcher
@@ -28,21 +28,23 @@ module TelegramBot
28
28
  end
29
29
  end
30
30
 
31
+ module PrependMethods
32
+ attr_accessor :handlers
31
33
 
32
- def self.included(clazz)
33
- clazz.send :prepend, Class.new do
34
- attr_accessor :handlers
35
-
36
- def initialize(*args, &block)
37
- @handlers = []
38
- super(*args, &block)
39
- end
34
+ def initialize(*args, &block)
35
+ @handlers = []
36
+ super(*args, &block)
40
37
  end
41
38
  end
42
39
 
40
+ def self.included(clazz)
41
+ clazz.prepend PrependMethods
42
+ end
43
+
43
44
 
44
45
  def on(type, *args, pass: false, &block)
45
- matcher_class = "#{type}_matcher".classify
46
+ matcher_class_name = "telegram_bot/#{type}_matcher".classify
47
+ matcher_class = matcher_class_name.constantize
46
48
  matcher = matcher_class.new(*args)
47
49
  handler = Handler.new(matcher, block, pass)
48
50
  @handlers << handler
@@ -64,8 +66,8 @@ module TelegramBot
64
66
  end
65
67
  end
66
68
 
67
- env.call(handler.arguments(msg),
68
- &handler.action)
69
+ env.call(*hndlr.arguments(msg),
70
+ &hndlr.action)
69
71
  end
70
72
  end
71
73
  end
@@ -1,12 +1,14 @@
1
- class TelegramBot::Location < Field.new(:longitude, :latitude)
2
- include AutoFromMethods
1
+ require_relative 'objects'
2
+
3
+ class TelegramBot::Location < Struct.new(:longitude, :latitude)
4
+ include TelegramBot::AutoFromMethods
3
5
 
4
6
  def self.from(hsh, lat = nil)
5
7
  case hsh
6
8
  when Integer
7
9
  new(hsh, lat)
8
10
  else
9
- super
11
+ super(hsh)
10
12
  end
11
13
  end
12
14
  end
@@ -1,4 +1,4 @@
1
- module TelegramBot
1
+ class TelegramBot
2
2
  class Matcher
3
3
  def env(msg)
4
4
  msg.extend(BasicObject.new)
@@ -45,6 +45,15 @@ module TelegramBot
45
45
 
46
46
  obj
47
47
  end
48
+
49
+ def arguments(msg)
50
+ if Regexp === @pattern
51
+ md = @pattern.match(msg.text)
52
+ md.to_a
53
+ else
54
+ [msg.text]
55
+ end
56
+ end
48
57
  end
49
58
 
50
59
  class CommandMatcher < Matcher
@@ -1,27 +1,30 @@
1
+ require_relative 'objects'
2
+ require 'forwardable'
3
+
1
4
  class TelegramBot::Message <
2
- Struct(:id,
3
- :from,
4
- :date,
5
- :chat,
6
- :forward_from,
7
- :forward_date,
8
- :reply_to_message,
9
- :text,
10
- :audio,
11
- :document,
12
- :photo,
13
- :sticker,
14
- :video,
15
- :contact,
16
- :location,
17
- :new_chat_participant,
18
- :left_chat_participant,
19
- :new_chat_title,
20
- :new_chat_photo,
21
- :delete_chat_photo,
22
- :group_chat_created)
5
+ Struct.new(:id,
6
+ :from,
7
+ :date,
8
+ :chat,
9
+ :forward_from,
10
+ :forward_date,
11
+ :reply_to_message,
12
+ :text,
13
+ :audio,
14
+ :document,
15
+ :photo,
16
+ :sticker,
17
+ :video,
18
+ :contact,
19
+ :location,
20
+ :new_chat_participant,
21
+ :left_chat_participant,
22
+ :new_chat_title,
23
+ :new_chat_photo,
24
+ :delete_chat_photo,
25
+ :group_chat_created)
23
26
 
24
- include AutoFromMethods
27
+ include TelegramBot::AutoFromMethods
25
28
 
26
29
  def self.hash_key_aliases
27
30
  {
@@ -31,21 +34,20 @@ class TelegramBot::Message <
31
34
 
32
35
  def self.extra_types
33
36
  {
34
- from: User,
35
- chat: Chat,
36
- forward_from: User,
37
- forward_date: Date,
38
- reply_to_message: Message,
39
- text: String,
40
- audio: Audio,
41
- document: Document,
42
- photo: [PhotoSize],
43
- sticker: Sticker,
44
- video: Video,
45
- contact: Contact,
46
- location: Location,
47
- new_chat_participant: User,
48
- left_chat_participant: User
37
+ from: TelegramBot::User,
38
+ chat: TelegramBot::Chat,
39
+ forward_from: TelegramBot::User,
40
+ forward_date: TelegramBot::Date,
41
+ reply_to_message: TelegramBot::Message,
42
+ audio: TelegramBot::Audio,
43
+ document: TelegramBot::Document,
44
+ photo: [ TelegramBot::PhotoSize],
45
+ sticker: TelegramBot::Sticker,
46
+ video: TelegramBot::Video,
47
+ contact: TelegramBot::Contact,
48
+ location: TelegramBot::Location,
49
+ new_chat_participant: TelegramBot::User,
50
+ left_chat_participant: TelegramBot::User
49
51
  }
50
52
  end
51
53
 
@@ -78,13 +80,14 @@ class TelegramBot::Message <
78
80
 
79
81
  def extend_env(obj)
80
82
  msg = self
81
- obj.instace_eval do
83
+ obj.instance_eval do
82
84
  @message = msg
83
85
  end
84
86
 
85
87
  members = self.members
86
88
 
87
89
  obj.extend do
90
+ extend Forwardable
88
91
  attr_reader :message
89
92
  def_delegators :@message, *members
90
93
  def_delegators :@message, :is_forward?, :is_reply?
@@ -1,7 +1,7 @@
1
1
  require_relative 'auto_from_methods'
2
2
 
3
- require_relative 'user'
4
3
  require_relative 'chat'
4
+ require_relative 'user'
5
5
  require_relative 'group_chat'
6
6
  require_relative 'message'
7
7
  require_relative 'photo_size'
@@ -12,3 +12,4 @@ require_relative 'contact'
12
12
  require_relative 'location'
13
13
  require_relative 'update'
14
14
  require_relative 'date'
15
+ require_relative 'sticker'
@@ -1,6 +1,8 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::PhotoSize <
2
4
  Struct.new(:id, :width, :height, :file_size)
3
- include AutoFromMethods
5
+ include TelegramBot::AutoFromMethods
4
6
 
5
7
  def hash_key_aliases
6
8
  {
@@ -1,4 +1,4 @@
1
- module TelegramBot
1
+ class TelegramBot
2
2
  class PollListener
3
3
  def initialize(client, interval)
4
4
  @client = client
@@ -19,9 +19,10 @@ module TelegramBot
19
19
  end
20
20
 
21
21
  def get_updates
22
- updates = @client.get_updates(@offset_id, 50)
22
+ updates = @client.get_updates(offset: @offset_id,
23
+ limit: 50)
23
24
  updates.each do |update|
24
- @offset_id = update.id
25
+ @offset_id = update.id + 1
25
26
  message_received(update.message)
26
27
  end
27
28
  end
@@ -1,5 +1,5 @@
1
1
  class TelegramBot::ReplyKeyboardHide <
2
2
  Struct.new(:hide_keyboard,
3
3
  :selective)
4
- include AutoFromMethods
4
+ include TelegramBot::AutoFromMethods
5
5
  end
@@ -3,5 +3,5 @@ class TelegramBot::ReplyKeyboardMarkup <
3
3
  :resize_keyboard,
4
4
  :one_time_keyboard,
5
5
  :selective)
6
- include AutoFromMethods
6
+ include TelegramBot::AutoFromMethods
7
7
  end
@@ -2,9 +2,9 @@ require 'rest-client'
2
2
  require 'json'
3
3
  require 'active_support/inflector'
4
4
 
5
- module TelegramBot
5
+ class TelegramBot
6
6
  module Request
7
- class PrependMethods
7
+ module PrependMethods
8
8
  attr_accessor :token
9
9
 
10
10
  def initialize(*args, token:, &block)
@@ -20,9 +20,11 @@ module TelegramBot
20
20
  end
21
21
 
22
22
  def request(method, params)
23
- url = construct_url(method)
24
- resp = RestClient.post(url, params)
25
- return JONS.parse(resp.body) if resp.code.to_s =~ /^2\d\d$/
23
+ url = construct_url(method)
24
+ resp = RestClient.post(url, params)
25
+ json = JSON.parse(resp.body)
26
+ result = json['result']
27
+ return result if resp.code.to_s =~ /^2\d\d$/
26
28
  raise Exception.new(resp)
27
29
  end
28
30
 
@@ -1,4 +1,4 @@
1
- module TelegramBot
1
+ class TelegramBot
2
2
  module RequestMethods
3
3
  def get_updates(offset: nil, limit: nil, timeout: nil)
4
4
  params = {
@@ -7,7 +7,7 @@ module TelegramBot
7
7
  timouet: timeout
8
8
  }.reject {|_,v| v.nil?}
9
9
 
10
- request(:get_update, params).map do |update|
10
+ request(:get_updates, params).map do |update|
11
11
  Update.from(update)
12
12
  end
13
13
  end
@@ -20,11 +20,12 @@ module TelegramBot
20
20
  disable_web_page_preview: nil,
21
21
  reply_to: nil,
22
22
  reply_markup: nil)
23
+ reply_to = Message.from(reply_to)
23
24
  params = {
24
25
  chat_id: Chat.from(chat).id,
25
26
  text: text,
26
27
  disable_web_page_preview: disable_web_page_preview,
27
- reply_to_message_id: Chat.from(reply_to).id
28
+ reply_to_message_id: reply_to && reply_to.id
28
29
  # TODO:
29
30
  # reply_markup: reply_markup
30
31
  }.reject {|_,v| v.nil?}
@@ -87,6 +88,15 @@ module TelegramBot
87
88
  :set_webhook
88
89
  ]
89
90
 
91
+ private
92
+
93
+ def todo(*args, &block)
94
+ defn_at = self.method(__callee__).source_location
95
+ warn "#{defn_at[0]}:<#{__callee__}>: not implemented"
96
+ end
97
+
98
+ public
99
+
90
100
  METHODS.each do |method|
91
101
  is_defined = self.instance_methods(false).include?(method)
92
102
  unless is_defined
@@ -96,12 +106,5 @@ module TelegramBot
96
106
  alias_method "#{method}_raw", method
97
107
  end
98
108
 
99
-
100
- private
101
-
102
- def todo(*args, &block)
103
- defn_at = self.method(__callee__).source_location
104
- warn "#{defn_at[0]}:<#{__callee__}>: not implemented"
105
- end
106
109
  end
107
110
  end
@@ -0,0 +1,17 @@
1
+ module TelegramBot::ShorthandMethods
2
+ def send_message(text, *args, to: message.chat)
3
+ bot.send_message(to, text, *args)
4
+ end
5
+
6
+ def reply(text, *args, to: message.chat)
7
+ bot.send_message(to, text, *args, reply_to: message)
8
+ end
9
+
10
+ def forward_message(to)
11
+ bot.forward_message(message, to)
12
+ end
13
+
14
+ def send_chat_action(action)
15
+ bot.send_chat_action(message.chat, action)
16
+ end
17
+ end
@@ -1,7 +1,9 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::Sticker <
2
- Struct(:id, :width, :height, :thumb, :file_size)
4
+ Struct.new(:id, :width, :height, :thumb, :file_size)
3
5
 
4
- include AutoFromMethods
6
+ include TelegramBot::AutoFromMethods
5
7
 
6
8
  def self.hash_key_aliases
7
9
  {
@@ -1,9 +1,11 @@
1
- class TelegramBot::Update < Strict(:id, :message)
2
- include AutoFromMethods
1
+ require_relative 'objects'
2
+
3
+ class TelegramBot::Update < Struct.new(:id, :message)
4
+ include TelegramBot::AutoFromMethods
3
5
 
4
6
  def self.extra_types
5
7
  {
6
- message: Message
8
+ message: TelegramBot::Message
7
9
  }
8
10
  end
9
11
 
@@ -1,4 +1,6 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::User <
2
4
  Struct.new(:id, :first_name, :last_name, :username)
3
- include AutoFromMethods
5
+ include TelegramBot::AutoFromMethods
4
6
  end
@@ -1,3 +1,3 @@
1
1
  class TelegramBot
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,3 +1,5 @@
1
+ require_relative 'objects'
2
+
1
3
  class TelegramBot::Video <
2
4
  Struct.new(:id,
3
5
  :width,
@@ -8,7 +10,7 @@ class TelegramBot::Video <
8
10
  :file_size,
9
11
  :caption)
10
12
 
11
- include AutoFromMethods
13
+ include TelegramBot::AutoFromMethods
12
14
 
13
15
  def self.hash_key_aliases
14
16
  {
@@ -9,10 +9,11 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Shou Ya"]
10
10
  spec.email = ["shouyatf@gmail.com"]
11
11
 
12
- spec.summary = %q{This is a bot framework that utilizes telegram's bots api}
12
+ spec.summary = %q{A bot framework for Telegram Bot API}
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
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
18
  # delete this section to allow pushing this gem to any host.
18
19
 
@@ -22,7 +23,7 @@ Gem::Specification.new do |spec|
22
23
  spec.require_paths = ["lib"]
23
24
 
24
25
  spec.add_dependency 'rest-client'
25
- spec.add_dependency 'active_support'
26
+ spec.add_dependency 'activesupport'
26
27
 
27
28
  spec.add_development_dependency "bundler", "~> 1.10"
28
29
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegram_bot_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shou Ya
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: active_support
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -100,6 +100,7 @@ files:
100
100
  - lib/telegram_bot/reply_keyboard_markup.rb
101
101
  - lib/telegram_bot/request.rb
102
102
  - lib/telegram_bot/request_methods.rb
103
+ - lib/telegram_bot/shorthand_methods.rb
103
104
  - lib/telegram_bot/sticker.rb
104
105
  - lib/telegram_bot/update.rb
105
106
  - lib/telegram_bot/user.rb
@@ -116,9 +117,9 @@ require_paths:
116
117
  - lib
117
118
  required_ruby_version: !ruby/object:Gem::Requirement
118
119
  requirements:
119
- - - ">="
120
+ - - '='
120
121
  - !ruby/object:Gem::Version
121
- version: '0'
122
+ version: 2.0.0
122
123
  required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  requirements:
124
125
  - - ">="
@@ -129,5 +130,5 @@ rubyforge_project:
129
130
  rubygems_version: 2.4.6
130
131
  signing_key:
131
132
  specification_version: 4
132
- summary: This is a bot framework that utilizes telegram's bots api
133
+ summary: A bot framework for Telegram Bot API
133
134
  test_files: []