te_bot 0.1.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.standard.yml +1 -1
- data/CHANGELOG.md +22 -1
- data/Gemfile.lock +5 -4
- data/README.md +120 -31
- data/lib/te_bot/cable.rb +15 -0
- data/lib/te_bot/court.rb +43 -26
- data/lib/te_bot/message.rb +5 -5
- data/lib/te_bot/sender_options.rb +37 -0
- data/lib/te_bot/version.rb +1 -1
- data/lib/te_bot/wire.rb +31 -8
- data/lib/te_bot.rb +1 -0
- data/te_bot.gemspec +2 -8
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fa39962791458ebf9b8cd56bc4de36445e2fc5bbcdef2f360e12963cf970fc0
|
4
|
+
data.tar.gz: d774066a9e4d7a2608371de89444a16e8a9b7cd52842fa7e38bb9406b5f1a9f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d9afb6cb164d7811dd2459313f703e0c84b639b5194f521ae7938d2a0474af011fcd7ae1cc5054b009d67717a7cec0da0da4053f591fc9599c43120246933ee
|
7
|
+
data.tar.gz: 7006934fa7a9652e3acc61a37bd80de279a2662d36aee1f0638a433e7a64a2fa3140e93850ed58b1a3a59f2d413589409cef2b4512d0ce18acf693b4f2735752
|
data/.standard.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
|
-
## [
|
1
|
+
## [Released]
|
2
2
|
|
3
3
|
## [0.1.0] - 2022-06-25
|
4
4
|
|
5
5
|
- Initial release
|
6
|
+
|
7
|
+
|
8
|
+
## [Released]
|
9
|
+
|
10
|
+
## [0.2.0] - 2022-07-02
|
11
|
+
|
12
|
+
- Change the implementation message replier from `reply(conn, message_string)` to `conn.reply text: message_string`.
|
13
|
+
- Add support for other message types such as audio, video, animation, markdown, and document
|
14
|
+
|
15
|
+
## [Released]
|
16
|
+
|
17
|
+
## [0.3.0] - 2022-07-02
|
18
|
+
|
19
|
+
- Support for the handler to return response direcly by returning rack array or hash.
|
20
|
+
|
21
|
+
|
22
|
+
## [Unreleased]
|
23
|
+
|
24
|
+
## [0.3.1] - 2022-07-03
|
25
|
+
|
26
|
+
- Support for helpers with `helpers` macro
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
te_bot (0.
|
4
|
+
te_bot (0.4.0)
|
5
5
|
faraday (~> 2.3)
|
6
6
|
rack (~> 2.2)
|
7
7
|
|
@@ -14,10 +14,10 @@ GEM
|
|
14
14
|
byebug (11.1.3)
|
15
15
|
crack (0.4.5)
|
16
16
|
rexml
|
17
|
-
faraday (2.
|
18
|
-
faraday-net_http (
|
17
|
+
faraday (2.5.2)
|
18
|
+
faraday-net_http (>= 2.0, < 3.1)
|
19
19
|
ruby2_keywords (>= 0.0.4)
|
20
|
-
faraday-net_http (
|
20
|
+
faraday-net_http (3.0.0)
|
21
21
|
hashdiff (1.0.1)
|
22
22
|
minitest (5.16.1)
|
23
23
|
parallel (1.22.1)
|
@@ -57,6 +57,7 @@ GEM
|
|
57
57
|
hashdiff (>= 0.4.0, < 2.0.0)
|
58
58
|
|
59
59
|
PLATFORMS
|
60
|
+
x86_64-darwin-21
|
60
61
|
x86_64-linux
|
61
62
|
|
62
63
|
DEPENDENCIES
|
data/README.md
CHANGED
@@ -1,21 +1,24 @@
|
|
1
1
|
# ::TeBot
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/te_bot.svg)](https://badge.fury.io/rb/te_bot) ![Main Workflows](https://github.com/aaripurna/te_bot/actions/workflows/main.yml/badge.svg)
|
4
4
|
|
5
|
-
|
5
|
+
Welcome to yet another telegram bot webhook handler.
|
6
|
+
|
7
|
+
This gem is used to handle telegram webhook and sending message with telegram bot.
|
6
8
|
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Install the gem and add to the application's Gemfile
|
10
12
|
|
11
|
-
gem
|
13
|
+
gem 'te_bot'
|
14
|
+
|
12
15
|
Then run
|
13
16
|
|
14
|
-
|
17
|
+
bundle install
|
15
18
|
|
16
19
|
If bundler is not being used to manage dependencies, install the gem by executing:
|
17
20
|
|
18
|
-
|
21
|
+
gem install te_bot
|
19
22
|
|
20
23
|
## Usage
|
21
24
|
|
@@ -25,23 +28,25 @@ This gem can be used as a standalone app since it implement rack interface. To u
|
|
25
28
|
# app.rb
|
26
29
|
|
27
30
|
require "te_bot"
|
31
|
+
require "te_bot/sender_options"
|
28
32
|
|
29
33
|
class MyWebhookApp < TeBot::Court
|
30
|
-
|
34
|
+
access_token ENV["YOUR_BOT_ACCESS_TOKEN"]
|
31
35
|
|
32
|
-
|
33
|
-
|
34
|
-
|
36
|
+
command("/start") do
|
37
|
+
reply text: "Welcome aboard my friend!"
|
38
|
+
end
|
35
39
|
|
36
|
-
|
37
|
-
|
38
|
-
|
40
|
+
command("/today") do
|
41
|
+
reply text: Time.now.to_s
|
42
|
+
end
|
39
43
|
end
|
40
44
|
```
|
41
45
|
|
42
46
|
To run this as a standalone app, you need to install `rack` and a webserver such as `puma`
|
43
47
|
|
44
|
-
|
48
|
+
bundle add rack puma
|
49
|
+
|
45
50
|
create a file named `config.ru` as the rack entrypoint.
|
46
51
|
|
47
52
|
```rb
|
@@ -53,12 +58,12 @@ run MyWebhookApp.new
|
|
53
58
|
```
|
54
59
|
To run the app we can use rackup
|
55
60
|
|
56
|
-
|
61
|
+
bundle exec rackup
|
57
62
|
|
58
63
|
For more detailed information about rack please visit [Rack Repository](https://github.com/rack/rack).
|
59
64
|
|
60
65
|
Now, our `MyWebhookApp` class is ready to handle some commands from telegram bot which are `/start` and `/today`.
|
61
|
-
The command aslo support argument that will be passed
|
66
|
+
The command aslo support argument that will be passed in the instance method `params`. To pass arguments, we can simply type `/today city:Jakarta limit:10`. The argument will be parsed as a Hash with string key => `{"city" => "Jakarta", "limit" => "10"}`.
|
62
67
|
|
63
68
|
To add a default handler for non existing command we can use the `#default_command` macro.
|
64
69
|
|
@@ -66,36 +71,38 @@ To add a default handler for non existing command we can use the `#default_comma
|
|
66
71
|
# app.rb
|
67
72
|
|
68
73
|
class MyWebhookApp < TeBot::Court
|
69
|
-
|
70
|
-
|
71
|
-
|
74
|
+
default_command do
|
75
|
+
reply text: "Sorry, Comand not found. Try another command. or type /help"
|
76
|
+
end
|
72
77
|
end
|
73
78
|
```
|
74
79
|
|
75
|
-
|
80
|
+
All the messages are passed in the instance method `message`
|
81
|
+
|
82
|
+
Other type of messages are also supported by using this macros `text` for regular text message, `query`, `document`, `audio`, and `voice`. For more detail please check this [Telegram Docs](https://core.telegram.org/bots/webhooks#testing-your-bot-with-updates).
|
76
83
|
|
77
84
|
```rb
|
78
85
|
# app.rb
|
79
86
|
|
80
87
|
class MyWebhookApp < TeBot::Court
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
88
|
+
text do
|
89
|
+
reply_message = do_some_fancy_stuff_here(message)
|
90
|
+
reply text: reply_message
|
91
|
+
end
|
85
92
|
end
|
86
93
|
```
|
87
|
-
And also we can define a macro for
|
94
|
+
And also we can define a macro for default action `#default_action` if the request does not match with this [Documentation](https://core.telegram.org/bots/webhooks#testing-your-bot-with-updates), Or we have not created the handler for that specific message type.
|
88
95
|
|
89
96
|
```rb
|
90
97
|
# app.rb
|
91
98
|
|
92
99
|
class MyWebhookApp < TeBot::Court
|
93
|
-
|
94
|
-
|
95
|
-
|
100
|
+
default_action do
|
101
|
+
reply text: "No, I can't talk like people. use command instead"
|
102
|
+
end
|
96
103
|
end
|
97
104
|
```
|
98
|
-
Since this app implements rack interface, and
|
105
|
+
Since this app implements rack interface, and rails is also a rack based application. We can mount this app direcly inside rails app.
|
99
106
|
|
100
107
|
```rb
|
101
108
|
# config/routes.rb
|
@@ -103,19 +110,101 @@ Since this app implements rack interface, and railr is also a rack based applica
|
|
103
110
|
require "lib/to/your_webhook"
|
104
111
|
|
105
112
|
Rails.application.routes.draw do
|
106
|
-
|
113
|
+
mount MyAwessomWebhook.new => "telegram_webhook"
|
107
114
|
end
|
108
115
|
```
|
109
116
|
|
110
117
|
### Sending Message to Telegram
|
111
118
|
To send message direcly to telegram, we can use this module `TeBot::Wire`
|
119
|
+
and need to require `"te_bot/sender_options"` to add default handler for different type of messages.
|
120
|
+
Available message types are `:text`, `:markdown`, `:photo`, `:audio`, `:document`, `:video`, `:animation` amd `:voice`
|
112
121
|
|
122
|
+
Some supported message by default:
|
113
123
|
```rb
|
114
124
|
# app.rb
|
115
125
|
sender = TeBot::Wire.new(ENV['YOUR_ACCESS_TOKEN_HERE'])
|
116
|
-
sender.send_message(chat_id, message_string)
|
126
|
+
sender.send_message(chat_id, text: message_string)
|
127
|
+
sender.send_message(chat_id, markdown: markdown_string)
|
128
|
+
|
129
|
+
sender.send_message(chat_id, photo: { photo: url, caption: caption })
|
130
|
+
sender.send_message(chat_id, video: { video: url, caption: caption})
|
131
|
+
sender.send_message(chat_id, document: { document: url, caption: caption})
|
132
|
+
sender.send_message(chat_id, audio: { audio: url, caption: caption})
|
133
|
+
sender.send_message(chat_id, animation: { animation: url, caption: caption})
|
134
|
+
|
135
|
+
```
|
136
|
+
|
137
|
+
For markdown telegram supports MarkdownV2 [refer to this](https://core.telegram.org/bots/api#markdownv2-style)
|
138
|
+
Please check the [documentation](https://core.telegram.org/bots/api#sendmessage) for more details.
|
139
|
+
|
140
|
+
### Custom Handler
|
141
|
+
|
142
|
+
Of course you can add more handler by extending the `TeBot::Wire` class
|
143
|
+
|
144
|
+
```ruby
|
145
|
+
# in/your/custom_handler.rb
|
146
|
+
|
147
|
+
TeBot::Wire.class_eval do
|
148
|
+
sender :json do |chat_id, message|
|
149
|
+
make_request("sendMessage", body: { chat_id: chat_id, json: message }.to_json)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
```
|
153
|
+
|
154
|
+
### Helpers
|
155
|
+
|
156
|
+
Using module
|
157
|
+
```ruby
|
158
|
+
# request_helpers.rb
|
159
|
+
|
160
|
+
module RequestHelpers
|
161
|
+
def get_nearest_hospitals
|
162
|
+
# do some fancy stuff
|
163
|
+
end
|
164
|
+
|
165
|
+
def get_the_nearest_routes(hospitals)
|
166
|
+
# do some even fancier stuff
|
167
|
+
end
|
168
|
+
|
169
|
+
def render_markdown(routes)
|
170
|
+
# do something else
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
class MyWebhookApp < TeBot::Court
|
175
|
+
include RequestHelpers
|
176
|
+
|
177
|
+
#... the rest of the code
|
178
|
+
end
|
179
|
+
|
180
|
+
```
|
181
|
+
|
182
|
+
Using instance methods
|
183
|
+
```ruby
|
184
|
+
|
185
|
+
# app.rb
|
186
|
+
|
187
|
+
class MyWebhookApp < TeBot::Court
|
188
|
+
command("/findhospital") do
|
189
|
+
hospitals = get_nearest_hospitals(params)
|
190
|
+
routes = get_the_nearest_routes(hospitals)
|
191
|
+
|
192
|
+
reply markdown: render_markdown(routes)
|
193
|
+
end
|
194
|
+
|
195
|
+
def get_nearest_hospitals(data)
|
196
|
+
# do some fancy stuff
|
197
|
+
end
|
198
|
+
|
199
|
+
def get_the_nearest_routes(hospitals)
|
200
|
+
# do some even fancier stuff
|
201
|
+
end
|
202
|
+
|
203
|
+
def render_markdown(routes)
|
204
|
+
# do something else
|
205
|
+
end
|
206
|
+
end
|
117
207
|
```
|
118
|
-
This gem only support [sendMessage](https://core.telegram.org/bots/api#sendmessage) API for this moment.
|
119
208
|
|
120
209
|
## Development
|
121
210
|
|
data/lib/te_bot/cable.rb
ADDED
data/lib/te_bot/court.rb
CHANGED
@@ -5,6 +5,8 @@ require "json"
|
|
5
5
|
|
6
6
|
module TeBot
|
7
7
|
class Court
|
8
|
+
include TeBot::Cable
|
9
|
+
|
8
10
|
class << self
|
9
11
|
attr_reader :wire, :commands
|
10
12
|
|
@@ -20,14 +22,6 @@ module TeBot
|
|
20
22
|
@default_action ||= block
|
21
23
|
end
|
22
24
|
|
23
|
-
def reply(conn, message)
|
24
|
-
send_message(conn.data&.chat_id, message)
|
25
|
-
end
|
26
|
-
|
27
|
-
def send_message(chat_id, message)
|
28
|
-
wire.send_message(chat_id, message)
|
29
|
-
end
|
30
|
-
|
31
25
|
def command(text, &block)
|
32
26
|
@commands ||= {}
|
33
27
|
@commands[text] = block
|
@@ -35,19 +29,40 @@ module TeBot
|
|
35
29
|
|
36
30
|
::TeBot::Message::GENERAL_MESSAGE_TYPES.each do |m|
|
37
31
|
define_method(m) do |&block|
|
38
|
-
|
39
|
-
|
32
|
+
@message_handlers ||= {}
|
33
|
+
|
34
|
+
if block.respond_to?(:call)
|
35
|
+
@message_handlers[m] = block
|
36
|
+
else
|
37
|
+
@message_handlers[m]
|
38
|
+
end
|
40
39
|
end
|
41
40
|
end
|
41
|
+
|
42
|
+
def message_handlers(handler)
|
43
|
+
@message_handlers ||= {}
|
44
|
+
@message_handlers[handler]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
attr_reader :params, :message, :wire
|
49
|
+
|
50
|
+
def initialize
|
51
|
+
@params = {}
|
52
|
+
@message = nil
|
53
|
+
@command = nil
|
54
|
+
@wire = self.class.wire
|
42
55
|
end
|
43
56
|
|
44
57
|
def call(env)
|
45
58
|
json_only(env) do |body|
|
46
59
|
response = handle_request(body)
|
47
60
|
|
48
|
-
|
49
|
-
|
50
|
-
|
61
|
+
case response
|
62
|
+
in [Integer, Hash, Array] => rack_response
|
63
|
+
rack_response
|
64
|
+
in Hash => json_body
|
65
|
+
[200, {"Content-Type" => "application/json"}, [JSON.generate(json_body)]]
|
51
66
|
else
|
52
67
|
[200, {"Content-Type" => "application/json"}, [JSON.generate({"message" => "success"})]]
|
53
68
|
end
|
@@ -72,32 +87,34 @@ module TeBot
|
|
72
87
|
end
|
73
88
|
|
74
89
|
def handle_request(body)
|
75
|
-
message = ::TeBot::Message.new(body)
|
90
|
+
@message = ::TeBot::Message.new(body)
|
91
|
+
|
92
|
+
@command, @params = @message.data&.content&.parse
|
76
93
|
|
77
|
-
|
78
|
-
command, params = message.data.content.parse
|
79
|
-
handler = self.class.commands[command]
|
94
|
+
@params = params
|
80
95
|
|
96
|
+
@message.command do
|
97
|
+
handler = self.class.commands[@command]
|
81
98
|
if handler.respond_to?(:call)
|
82
|
-
handler
|
99
|
+
instance_eval(&handler)
|
83
100
|
elsif self.class.default_command.respond_to?(:call)
|
84
|
-
self.class.default_command
|
101
|
+
instance_eval(&self.class.default_command)
|
85
102
|
end
|
86
103
|
end
|
87
104
|
|
88
|
-
::TeBot::Message::GENERAL_MESSAGE_TYPES.each do |
|
89
|
-
message.public_send(
|
90
|
-
handler = self.class.
|
105
|
+
::TeBot::Message::GENERAL_MESSAGE_TYPES.each do |message_type|
|
106
|
+
@message.public_send(message_type) do
|
107
|
+
handler = self.class.message_handlers(message_type)
|
91
108
|
|
92
109
|
next unless handler.respond_to?(:call)
|
93
|
-
handler
|
110
|
+
instance_eval(&handler)
|
94
111
|
end
|
95
112
|
end
|
96
113
|
|
97
|
-
if message.handler.respond_to?(:call)
|
98
|
-
message.
|
114
|
+
if @message.handler.respond_to?(:call)
|
115
|
+
instance_eval(&@message.handler)
|
99
116
|
elsif self.class.default_action.respond_to?(:call)
|
100
|
-
self.class.default_action
|
117
|
+
instance_eval(&self.class.default_action)
|
101
118
|
end
|
102
119
|
end
|
103
120
|
end
|
data/lib/te_bot/message.rb
CHANGED
@@ -17,17 +17,17 @@ module TeBot
|
|
17
17
|
@message
|
18
18
|
end
|
19
19
|
|
20
|
-
MESSAGE_TYPES.each do |
|
21
|
-
define_method(
|
22
|
-
|
20
|
+
MESSAGE_TYPES.each do |f|
|
21
|
+
define_method(f) do |&block|
|
22
|
+
@formats ||= {}
|
23
|
+
@formats[f.to_s] = block
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
26
27
|
def handler
|
27
28
|
return unless data || data.content
|
28
29
|
content_class = data.content.class.name.split("::").last.downcase
|
29
|
-
|
30
|
-
instance_variable_get("@#{content_class}")
|
30
|
+
@formats[content_class]
|
31
31
|
end
|
32
32
|
|
33
33
|
def call
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative "./wire"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
TeBot::Wire.class_eval do
|
5
|
+
sender :text do |chat_id, message|
|
6
|
+
make_request("sendMessage", body: {chat_id: chat_id, text: message}.to_json)
|
7
|
+
end
|
8
|
+
|
9
|
+
# this is using MarkdownV2 https://core.telegram.org/bots/api#markdownv2-style
|
10
|
+
sender :markdown do |chat_id, message|
|
11
|
+
make_request("sendMessage", body: {chat_id: chat_id, text: message, parse_mode: "MarkdownV2"}.to_json)
|
12
|
+
end
|
13
|
+
|
14
|
+
sender :photo do |chat_id, message|
|
15
|
+
make_request("sendPhoto", body: message.merge({chat_id: chat_id}).to_json)
|
16
|
+
end
|
17
|
+
|
18
|
+
sender :audio do |chat_id, message|
|
19
|
+
make_request("sendAudio", body: message.merge({chat_id: chat_id}).to_json)
|
20
|
+
end
|
21
|
+
|
22
|
+
sender :document do |chat_id, message|
|
23
|
+
make_request("sendDocument", body: message.merge({chat_id: chat_id}).to_json)
|
24
|
+
end
|
25
|
+
|
26
|
+
sender :video do |chat_id, message|
|
27
|
+
make_request("sendVideo", body: message.merge({chat_id: chat_id}).to_json)
|
28
|
+
end
|
29
|
+
|
30
|
+
sender :animation do |chat_id, message|
|
31
|
+
make_request("sendAnimation", body: message.merge({chat_id: chat_id}).to_json)
|
32
|
+
end
|
33
|
+
|
34
|
+
sender :voice do |chat_id, message|
|
35
|
+
make_request("sendVoice", body: message.merge({chat_id: chat_id}).to_json)
|
36
|
+
end
|
37
|
+
end
|
data/lib/te_bot/version.rb
CHANGED
data/lib/te_bot/wire.rb
CHANGED
@@ -5,24 +5,47 @@ require "faraday/net_http"
|
|
5
5
|
|
6
6
|
module TeBot
|
7
7
|
class Wire
|
8
|
+
class << self
|
9
|
+
def sender(message_format, handler = nil, &block)
|
10
|
+
@senders ||= {}
|
11
|
+
@senders[message_format] = (block || handler)
|
12
|
+
end
|
13
|
+
|
14
|
+
def senders
|
15
|
+
@senders || {}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
8
19
|
CONN = Faraday.new(
|
9
20
|
url: "https://api.telegram.org/",
|
10
21
|
headers: {"Content-Type" => "application/json"}
|
11
22
|
)
|
12
23
|
|
13
|
-
def url(path)
|
14
|
-
"/bot#{@access_token}/#{path}"
|
15
|
-
end
|
16
|
-
|
17
24
|
def initialize(access_token)
|
18
25
|
@access_token = access_token
|
19
26
|
end
|
20
27
|
|
21
|
-
def
|
22
|
-
CONN.post(url(
|
23
|
-
req.params
|
24
|
-
req.
|
28
|
+
def make_request(path, params: nil, headers: nil, body: nil)
|
29
|
+
CONN.post(url(path)) do |req|
|
30
|
+
req.params.merge!(params) if params
|
31
|
+
req.headers.merge!(headers) if headers
|
32
|
+
req.body = body if body
|
25
33
|
end
|
26
34
|
end
|
35
|
+
|
36
|
+
def url(path)
|
37
|
+
"/bot#{@access_token}/#{path}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def send_message(chat_id, **payload)
|
41
|
+
message_format, message = payload.first
|
42
|
+
handler = self.class.senders[message_format]
|
43
|
+
|
44
|
+
raise ArgumentError, "Message type invalid. sender :#{message_format} not defined" if handler.nil?
|
45
|
+
|
46
|
+
return instance_exec(chat_id, message, &handler) if handler.respond_to?(:call)
|
47
|
+
|
48
|
+
public_send(handler, chat_id, message)
|
49
|
+
end
|
27
50
|
end
|
28
51
|
end
|
data/lib/te_bot.rb
CHANGED
data/te_bot.gemspec
CHANGED
@@ -11,11 +11,11 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.summary = "Self-contaned telegram bot handler."
|
12
12
|
spec.description = "All at one telegram bot."
|
13
13
|
spec.homepage = "https://github.com/aaripurna/te_bot"
|
14
|
-
spec.required_ruby_version = ">= 2.
|
14
|
+
spec.required_ruby_version = ">= 2.7.0"
|
15
15
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
17
|
spec.metadata["source_code_uri"] = "https://github.com/aaripurna/te_bot"
|
18
|
-
spec.metadata["changelog_uri"] = "https://github.com/aaripurna/te_bot/blob/main/CHANGELOG.md
|
18
|
+
spec.metadata["changelog_uri"] = "https://github.com/aaripurna/te_bot/blob/main/CHANGELOG.md"
|
19
19
|
|
20
20
|
# Specify which files should be added to the gem when it is released.
|
21
21
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -28,12 +28,6 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
29
29
|
spec.require_paths = ["lib"]
|
30
30
|
|
31
|
-
# Uncomment to register a new dependency of your gem
|
32
|
-
# spec.add_dependency "example-gem", "~> 1.0"
|
33
|
-
|
34
31
|
spec.add_dependency "rack", "~> 2.2"
|
35
32
|
spec.add_dependency "faraday", "~> 2.3"
|
36
|
-
|
37
|
-
# For more information and examples about making a new gem, check out our
|
38
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
39
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: te_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nawa Aripurna
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -53,8 +53,10 @@ files:
|
|
53
53
|
- README.md
|
54
54
|
- Rakefile
|
55
55
|
- lib/te_bot.rb
|
56
|
+
- lib/te_bot/cable.rb
|
56
57
|
- lib/te_bot/court.rb
|
57
58
|
- lib/te_bot/message.rb
|
59
|
+
- lib/te_bot/sender_options.rb
|
58
60
|
- lib/te_bot/version.rb
|
59
61
|
- lib/te_bot/wire.rb
|
60
62
|
- sig/te_bot.rbs
|
@@ -64,7 +66,7 @@ licenses: []
|
|
64
66
|
metadata:
|
65
67
|
homepage_uri: https://github.com/aaripurna/te_bot
|
66
68
|
source_code_uri: https://github.com/aaripurna/te_bot
|
67
|
-
changelog_uri: https://github.com/aaripurna/te_bot/blob/main/CHANGELOG.md
|
69
|
+
changelog_uri: https://github.com/aaripurna/te_bot/blob/main/CHANGELOG.md
|
68
70
|
post_install_message:
|
69
71
|
rdoc_options: []
|
70
72
|
require_paths:
|
@@ -73,7 +75,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
75
|
requirements:
|
74
76
|
- - ">="
|
75
77
|
- !ruby/object:Gem::Version
|
76
|
-
version: 2.
|
78
|
+
version: 2.7.0
|
77
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
80
|
requirements:
|
79
81
|
- - ">="
|