telegram_meetup_bot 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/bin/telegram_meetup_bot +1 -0
- data/config_samples/responses.yml +2 -0
- data/lib/telegram_meetup_bot/calendar.rb +28 -10
- data/lib/telegram_meetup_bot/client.rb +1 -1
- data/lib/telegram_meetup_bot/commands_handler.rb +22 -61
- data/lib/telegram_meetup_bot/handler_helper.rb +90 -0
- data/lib/telegram_meetup_bot/initializers/base.rb +2 -3
- data/lib/telegram_meetup_bot/initializers/config_loader.rb +0 -3
- data/lib/telegram_meetup_bot/initializers/responses_loader.rb +2 -1
- data/lib/telegram_meetup_bot/messenger.rb +1 -1
- data/lib/telegram_meetup_bot/params_parser.rb +8 -0
- data/lib/telegram_meetup_bot/storage.rb +4 -0
- data/lib/telegram_meetup_bot/version.rb +1 -1
- data/lib/telegram_meetup_bot.rb +11 -10
- data/spec/spec_helper.rb +1 -0
- data/spec/telegram_meetup_bot/calendar_spec.rb +34 -0
- data/spec/telegram_meetup_bot/commands_handler_spec.rb +41 -0
- data/spec/telegram_meetup_bot/params_parser_spec.rb +22 -0
- data/telegram_meetup_bot.gemspec +3 -2
- metadata +22 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0f006330cda4dcc1f556f33824fe35b02021336
|
4
|
+
data.tar.gz: c57bfd3e78002113e820946dc5a1353d55421bba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa2ba469c84317ae87940a4cd697f13662377566403768fc1066addc2825bc657da3374831554d4cd9a66fefe3f347a3f7ab96c95501237f7a84025d8c1df071
|
7
|
+
data.tar.gz: 76e08f87c49e62f44808a8dd01b0f44d737eabced30190825a987f283726cd80defde6b2ed4be30a84338d49cf8a9235c8734aac3da29553661fb0e02666d6a1
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# TelegramMeetupBot
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/mendab1e/telegram_meetup_bot.svg)](https://travis-ci.org/mendab1e/telegram_meetup_bot)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/telegram_meetup_bot.svg)](http://badge.fury.io/rb/telegram_meetup_bot) [![Build Status](https://travis-ci.org/mendab1e/telegram_meetup_bot.svg)](https://travis-ci.org/mendab1e/telegram_meetup_bot)
|
4
4
|
|
5
5
|
Telegram bot for meetups organisation. It suits really well for small communities, where people want to attend a place together, but not on regular basis.
|
6
6
|
|
@@ -44,7 +44,7 @@ Run your bot:
|
|
44
44
|
|
45
45
|
## Contributing
|
46
46
|
|
47
|
-
1. Fork it ( https://github.com/
|
47
|
+
1. Fork it ( https://github.com/mendab1e/telegram_meetup_bot/fork )
|
48
48
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
49
49
|
3. Commit your changes (`git commit -am 'add some feature'`)
|
50
50
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/bin/telegram_meetup_bot
CHANGED
@@ -8,6 +8,7 @@ config_path = File.join(ENV['HOME'], '.telegram_meetup_bot')
|
|
8
8
|
if ARGV.first == '--generate'
|
9
9
|
FileUtils.mkdir(config_path) unless Dir.exist?(config_path)
|
10
10
|
samples_dir = File.expand_path('../../config_samples', __FILE__)
|
11
|
+
|
11
12
|
%w(config.yml responses.yml).each do |sample|
|
12
13
|
file = File.join(samples_dir, sample)
|
13
14
|
FileUtils.cp(file, config_path)
|
@@ -9,6 +9,7 @@ old_date: "This date is too old."
|
|
9
9
|
nobody: "No one planned to come on %date%."
|
10
10
|
not_subscribed: "You wasn't subscribed on %date%."
|
11
11
|
no_username: "%first_name%, please set a username in the Telegram settings."
|
12
|
+
cal: "Reserved days in %date%:"
|
12
13
|
help: |
|
13
14
|
Hi, %first_name%. Use this commands list:
|
14
15
|
/today 14:00 - add yourself to the today list (time is optional);
|
@@ -17,4 +18,5 @@ help: |
|
|
17
18
|
/date 23 14:00 - add yourself to the list on 23rd of the current month (time is optional);
|
18
19
|
/date_list 23.04 - display the list for April 23 of the current year;
|
19
20
|
/date_cancel 23.04.16 - remove yourself from the list on 23.04.16;
|
21
|
+
/cal 1 - display reserved days in January (it uses current month by default)
|
20
22
|
There are 3 formats for date available: 14 - day, 14.09 - day and month, 14.09.15 - day, month and year;
|
@@ -9,16 +9,6 @@ module TelegramMeetupBot
|
|
9
9
|
@time = args[:time]
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.formated_users_for_date(date)
|
13
|
-
storage = Initializers::ConfigLoader.storage
|
14
|
-
users = storage.get_users_for_date(date)
|
15
|
-
users.map! do |user|
|
16
|
-
username = user[:username] ? " @#{user[:username]}" : ''
|
17
|
-
"#{user[:first_name]}#{username} #{user[:time]}"
|
18
|
-
end
|
19
|
-
users.join("\n")
|
20
|
-
end
|
21
|
-
|
22
12
|
def add_user_to_date
|
23
13
|
process_user do |users, saved_user|
|
24
14
|
return if saved_user == user_hash
|
@@ -38,6 +28,25 @@ module TelegramMeetupBot
|
|
38
28
|
end
|
39
29
|
end
|
40
30
|
|
31
|
+
def self.formated_users_for_date(date)
|
32
|
+
storage = Initializers::ConfigLoader.storage
|
33
|
+
users = storage.get_users_for_date(date)
|
34
|
+
users.map! do |user|
|
35
|
+
username = user[:username] ? " @#{user[:username]}" : ''
|
36
|
+
"#{user[:first_name]}#{username} #{user[:time]}"
|
37
|
+
end
|
38
|
+
users.join("\n")
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.submited_days_of_month(month)
|
42
|
+
storage = Initializers::ConfigLoader.storage
|
43
|
+
dates = storage.get_all_available_dates
|
44
|
+
min, max = build_date_window(month)
|
45
|
+
|
46
|
+
dates.keep_if { |date| date >= min && date <= max }.sort.
|
47
|
+
map { |date| date.match(/\d\d$/) }.join(' ')
|
48
|
+
end
|
49
|
+
|
41
50
|
private
|
42
51
|
|
43
52
|
def process_user(&block)
|
@@ -54,5 +63,14 @@ module TelegramMeetupBot
|
|
54
63
|
user.to_h
|
55
64
|
end
|
56
65
|
end
|
66
|
+
|
67
|
+
def self.build_date_window(month)
|
68
|
+
today = Date.today
|
69
|
+
year = month < today.month ? today.next_year.year : today.year
|
70
|
+
max = Date.new(year, month, -1).to_s
|
71
|
+
min = today.month == month ? today.to_s : Date.new(year, month, 1).to_s
|
72
|
+
|
73
|
+
[min, max]
|
74
|
+
end
|
57
75
|
end
|
58
76
|
end
|
@@ -1,108 +1,69 @@
|
|
1
1
|
module TelegramMeetupBot
|
2
2
|
class CommandsHandler
|
3
|
-
COMMANDS = %w(today today_list today_cancel
|
4
|
-
|
3
|
+
COMMANDS = %w(today today_list today_cancel
|
4
|
+
date date_list date_cancel help cal)
|
5
|
+
attr_reader :command, :params, :helper
|
5
6
|
|
6
7
|
def initialize(args)
|
7
8
|
parser = MessageParser.new(args.fetch(:message))
|
8
|
-
@messenger = args.fetch(:messenger)
|
9
9
|
@command = COMMANDS.include?(parser.command) ? parser.command : 'help'
|
10
10
|
@params = parser.params
|
11
|
-
@
|
11
|
+
@helper = HandlerHelper.new(
|
12
|
+
author: parser.author,
|
13
|
+
command: @command,
|
14
|
+
messenger: args.fetch(:messenger)
|
15
|
+
)
|
12
16
|
end
|
13
17
|
|
14
18
|
def process
|
15
|
-
if
|
19
|
+
if self.class.instance_method(command).arity == 0
|
16
20
|
send command
|
17
21
|
else
|
18
22
|
send command, params
|
19
23
|
end
|
20
24
|
|
21
|
-
|
25
|
+
helper.send_empty_username_notification unless helper.author_has_username?
|
22
26
|
end
|
23
27
|
|
24
28
|
private
|
25
29
|
|
26
30
|
def today(params)
|
27
|
-
time = ParamsParser.new(params.first).parse_time if params.
|
28
|
-
handle_date(Date.today, time)
|
31
|
+
time = ParamsParser.new(params.first).parse_time if params.any?
|
32
|
+
helper.handle_date(Date.today, time)
|
29
33
|
end
|
30
34
|
|
31
35
|
def date(params)
|
32
36
|
date = ParamsParser.new(params.first).parse_date
|
33
37
|
time = ParamsParser.new(params[1]).parse_time if params[1]
|
34
|
-
handle_date(date, time)
|
35
|
-
end
|
36
|
-
|
37
|
-
def handle_date(date, time)
|
38
|
-
Calendar.new(date: date, user: author, time: time).add_user_to_date
|
39
|
-
messenger.send build_response(date: date)
|
38
|
+
helper.handle_date(date, time)
|
40
39
|
end
|
41
40
|
|
42
41
|
def today_list
|
43
|
-
handle_date_list Date.today
|
42
|
+
helper.handle_date_list Date.today
|
44
43
|
end
|
45
44
|
|
46
45
|
def date_list(params)
|
47
46
|
date = ParamsParser.new(params.first).parse_date
|
48
|
-
handle_date_list
|
49
|
-
end
|
50
|
-
|
51
|
-
def handle_date_list(date)
|
52
|
-
users = Calendar.formated_users_for_date(date)
|
53
|
-
messenger.send list_response(date, users)
|
47
|
+
helper.handle_date_list date
|
54
48
|
end
|
55
49
|
|
56
50
|
def today_cancel
|
57
|
-
handle_date_cancel Date.today
|
51
|
+
helper.handle_date_cancel Date.today
|
58
52
|
end
|
59
53
|
|
60
54
|
def date_cancel(params)
|
61
55
|
date = ParamsParser.new(params.first).parse_date
|
62
|
-
handle_date_cancel
|
56
|
+
helper.handle_date_cancel date
|
63
57
|
end
|
64
58
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
messenger.send build_response(args)
|
59
|
+
def cal(params)
|
60
|
+
month = ParamsParser.new(params.first).parse_month if params.any?
|
61
|
+
month ||= Date.today.month
|
62
|
+
helper.handle_cal month
|
70
63
|
end
|
71
64
|
|
72
65
|
def help
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
|
-
def no_username_notification
|
77
|
-
messenger.send build_response(key: 'no_username')
|
78
|
-
end
|
79
|
-
|
80
|
-
def date_is_valid?(date)
|
81
|
-
if date.nil?
|
82
|
-
messenger.send build_response(key: 'wrong_date_format')
|
83
|
-
return false
|
84
|
-
elsif date < Date.today
|
85
|
-
messenger.send build_response(key: 'old_date')
|
86
|
-
return false
|
87
|
-
end
|
88
|
-
true
|
89
|
-
end
|
90
|
-
|
91
|
-
def list_response(date, list)
|
92
|
-
if list.empty?
|
93
|
-
build_response(key: 'nobody', date: date)
|
94
|
-
else
|
95
|
-
build_response(date: date) { |response| "#{response}\n#{list}" }
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def build_response(args = {})
|
100
|
-
response_key = args.fetch(:key) { command }
|
101
|
-
response = Initializers::ResponsesLoader.responses[response_key].dup
|
102
|
-
response.gsub!('%first_name%', author.first_name)
|
103
|
-
response.gsub!('%date%', args[:date].strftime('%d %h %Y')) if args[:date]
|
104
|
-
|
105
|
-
block_given? ? yield(response) : response
|
66
|
+
helper.handle_default_command
|
106
67
|
end
|
107
68
|
end
|
108
69
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module TelegramMeetupBot
|
2
|
+
class HandlerHelper
|
3
|
+
attr_reader :command, :author, :messenger, :error
|
4
|
+
|
5
|
+
def initialize(args)
|
6
|
+
@command = args.fetch(:command)
|
7
|
+
@author = args.fetch(:author)
|
8
|
+
@messenger = args.fetch(:messenger)
|
9
|
+
end
|
10
|
+
|
11
|
+
def handle_date(date, time)
|
12
|
+
handle(date) do
|
13
|
+
Calendar.new(date: date, user: author, time: time).add_user_to_date
|
14
|
+
messenger.send_text build_response(date: date)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle_date_list(date)
|
19
|
+
handle(date) do
|
20
|
+
users = Calendar.formated_users_for_date(date)
|
21
|
+
messenger.send_text list_response(list: users, date: date)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def handle_date_cancel(date)
|
26
|
+
handle(date) do
|
27
|
+
calendar = Calendar.new(date: date, user: author)
|
28
|
+
deleted_user = calendar.delete_user_from_date
|
29
|
+
args = deleted_user ? {} : {key: 'not_subscribed', date: date}
|
30
|
+
messenger.send_text build_response(args)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def handle_default_command
|
35
|
+
messenger.send_text build_response
|
36
|
+
end
|
37
|
+
|
38
|
+
def send_empty_username_notification
|
39
|
+
messenger.send_text build_response(key: 'no_username')
|
40
|
+
end
|
41
|
+
|
42
|
+
def author_has_username?
|
43
|
+
author.username
|
44
|
+
end
|
45
|
+
|
46
|
+
def handle_cal(month)
|
47
|
+
dates = Calendar.submited_days_of_month(month)
|
48
|
+
today = Date.today
|
49
|
+
year = month < today.month ? today.next_year.year : today.year
|
50
|
+
month = Date.new(year, month)
|
51
|
+
messenger.send_text list_response(list: dates, month: month)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def handle(date, &block)
|
57
|
+
if date_has_error?(date)
|
58
|
+
messenger.send_text error
|
59
|
+
else
|
60
|
+
yield
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def date_has_error?(date)
|
65
|
+
if date.nil?
|
66
|
+
@error = build_response(key: 'wrong_date_format')
|
67
|
+
elsif date < Date.today
|
68
|
+
@error = build_response(key: 'old_date')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def list_response(args)
|
73
|
+
if args.fetch(:list).empty?
|
74
|
+
build_response(args.merge(key: 'nobody'))
|
75
|
+
else
|
76
|
+
build_response(args) { |response| "#{response}\n#{args.fetch(:list)}" }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def build_response(args = {})
|
81
|
+
response_key = args.fetch(:key) { command }
|
82
|
+
response = Initializers::ResponsesLoader.responses[response_key].dup
|
83
|
+
response.gsub!('%first_name%', author.first_name)
|
84
|
+
response.gsub!('%date%', args[:date].strftime('%d %h %Y')) if args[:date]
|
85
|
+
response.gsub!('%date%', args[:month].strftime('%h %Y')) if args[:month]
|
86
|
+
|
87
|
+
block_given? ? yield(response) : response
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -7,7 +7,7 @@ module TelegramMeetupBot
|
|
7
7
|
def preload(config_path)
|
8
8
|
@configurations ||= begin
|
9
9
|
file = File.join(config_path, self::FILE_NAME)
|
10
|
-
|
10
|
+
exit_if_file_not_exist(file)
|
11
11
|
config = YAML.load(File.open(file).read)
|
12
12
|
validate(config.keys, file)
|
13
13
|
config.map { |_,v| v.freeze }
|
@@ -15,7 +15,7 @@ module TelegramMeetupBot
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def exit_if_file_not_exist(file)
|
19
19
|
unless File.exist? file
|
20
20
|
puts "Error: file not found #{file}"
|
21
21
|
exit
|
@@ -31,7 +31,6 @@ module TelegramMeetupBot
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
@@ -3,7 +3,8 @@ module TelegramMeetupBot
|
|
3
3
|
class ResponsesLoader < Base
|
4
4
|
FILE_NAME = 'responses.yml'
|
5
5
|
AVAILABLE_KEYS = %w(today today_list today_cancel date date_list
|
6
|
-
date_cancel wrong_date_format old_date nobody not_subscribed
|
6
|
+
date_cancel wrong_date_format old_date nobody not_subscribed
|
7
|
+
no_username help cal)
|
7
8
|
|
8
9
|
def self.responses
|
9
10
|
@configurations
|
data/lib/telegram_meetup_bot.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require 'telegram/bot'
|
2
|
+
require 'redis'
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
|
4
|
+
require 'telegram_meetup_bot/version'
|
5
|
+
require 'telegram_meetup_bot/initializers'
|
6
|
+
require 'telegram_meetup_bot/client'
|
7
|
+
require 'telegram_meetup_bot/messenger'
|
8
|
+
require 'telegram_meetup_bot/message_parser'
|
9
|
+
require 'telegram_meetup_bot/storage'
|
10
|
+
require 'telegram_meetup_bot/calendar'
|
11
|
+
require 'telegram_meetup_bot/commands_handler'
|
12
|
+
require 'telegram_meetup_bot/params_parser'
|
13
|
+
require 'telegram_meetup_bot/handler_helper'
|
13
14
|
|
14
15
|
module TelegramMeetupBot
|
15
16
|
def self.run(config_path)
|
data/spec/spec_helper.rb
CHANGED
@@ -60,4 +60,38 @@ RSpec.describe TelegramMeetupBot::Calendar do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
|
+
|
64
|
+
describe 'Calendar#submited_days_of_month' do
|
65
|
+
let(:storage) { double('storage') }
|
66
|
+
let(:month) { 7 }
|
67
|
+
subject { described_class }
|
68
|
+
before { allow(storage).to receive(:get_all_available_dates).and_return(dates) }
|
69
|
+
|
70
|
+
context "when month isn't current" do
|
71
|
+
let(:dates) { %w(2015-07-30 2015-07-15 2015-07-16 2015-06-14 2015-08-17) }
|
72
|
+
it "works" do
|
73
|
+
Timecop.freeze(Date.new(2015, month - 1, 1)) do
|
74
|
+
expect(subject.submited_days_of_month(month)).to eq("15 16 30")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when month is current" do
|
80
|
+
let(:dates) { %w(2015-07-30 2015-07-15 2015-07-16 2015-06-14 2015-08-17) }
|
81
|
+
it "starts from today" do
|
82
|
+
Timecop.freeze(Date.new(2015, month, 16)) do
|
83
|
+
expect(subject.submited_days_of_month(month)).to eq("16 30")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "when month < current_month" do
|
89
|
+
let(:dates) { %w(2015-06-30 2016-06-15) }
|
90
|
+
it "starts from today" do
|
91
|
+
Timecop.freeze(Date.new(2015, month, 16)) do
|
92
|
+
expect(subject.submited_days_of_month(month - 1)).to eq("15")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
63
97
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe TelegramMeetupBot::CommandsHandler do
|
4
|
+
let(:messenger) { instance_double('message') }
|
5
|
+
let(:from) { instance_double('from', id: 1, username: 'Ikari01', first_name: 'Shinji') }
|
6
|
+
let(:message) { instance_double('message', text: command, from: from) }
|
7
|
+
|
8
|
+
subject { described_class.new(message: message, messenger: messenger) }
|
9
|
+
|
10
|
+
describe '#process' do
|
11
|
+
context "when command isn't in whitelist" do
|
12
|
+
let(:command) { '/unknow_command' }
|
13
|
+
|
14
|
+
it "calls help command" do
|
15
|
+
allow_any_instance_of(TelegramMeetupBot::HandlerHelper).to receive(:handle_default_command)
|
16
|
+
expect(subject).to receive(:help).with(no_args)
|
17
|
+
subject.process
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when command without args" do
|
22
|
+
let(:command) { '/today_list' }
|
23
|
+
|
24
|
+
it "works" do
|
25
|
+
allow_any_instance_of(TelegramMeetupBot::HandlerHelper).to receive(:handle_date_list)
|
26
|
+
expect(subject).to receive(:today_list).with(no_args)
|
27
|
+
subject.process
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "when command with args" do
|
32
|
+
let(:command) { '/date 08.11.07' }
|
33
|
+
|
34
|
+
it "works" do
|
35
|
+
allow_any_instance_of(TelegramMeetupBot::HandlerHelper).to receive(:handle_date)
|
36
|
+
expect(subject).to receive(:date).with(['08.11.07'])
|
37
|
+
subject.process
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -66,4 +66,26 @@ RSpec.describe TelegramMeetupBot::ParamsParser do
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
69
|
+
|
70
|
+
describe '#parse_month' do
|
71
|
+
context 'correct' do
|
72
|
+
let(:months) { %w(01 1) }
|
73
|
+
|
74
|
+
it 'works' do
|
75
|
+
months.each do |date|
|
76
|
+
expect(described_class.new(date).parse_month).to eq(1)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'wrong_format' do
|
82
|
+
let(:months) { %w(abc 13 0) }
|
83
|
+
|
84
|
+
it 'works' do
|
85
|
+
months.each do |date|
|
86
|
+
expect(described_class.new(date).parse_month).to eq(nil)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
69
91
|
end
|
data/telegram_meetup_bot.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Timur Yanberdin"]
|
10
10
|
spec.email = ["yanberdint@gmail.com"]
|
11
11
|
spec.summary = "Telegram bot for meetups organisation"
|
12
|
-
spec.homepage = ""
|
12
|
+
spec.homepage = "https://github.com/mendab1e/telegram_meetup_bot"
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
22
|
spec.add_development_dependency "rspec"
|
23
23
|
spec.add_development_dependency "pry"
|
24
|
+
spec.add_development_dependency "timecop"
|
24
25
|
|
25
26
|
spec.add_dependency 'redis'
|
26
|
-
spec.add_dependency 'telegram-bot-ruby'
|
27
|
+
spec.add_dependency 'telegram-bot-ruby', ">= 0.3.5"
|
27
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: telegram_meetup_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timur Yanberdin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: timecop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: redis
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +100,14 @@ dependencies:
|
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: 0.3.5
|
90
104
|
type: :runtime
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 0.3.5
|
97
111
|
description:
|
98
112
|
email:
|
99
113
|
- yanberdint@gmail.com
|
@@ -115,6 +129,7 @@ files:
|
|
115
129
|
- lib/telegram_meetup_bot/calendar.rb
|
116
130
|
- lib/telegram_meetup_bot/client.rb
|
117
131
|
- lib/telegram_meetup_bot/commands_handler.rb
|
132
|
+
- lib/telegram_meetup_bot/handler_helper.rb
|
118
133
|
- lib/telegram_meetup_bot/initializers.rb
|
119
134
|
- lib/telegram_meetup_bot/initializers/base.rb
|
120
135
|
- lib/telegram_meetup_bot/initializers/config_loader.rb
|
@@ -126,10 +141,11 @@ files:
|
|
126
141
|
- lib/telegram_meetup_bot/version.rb
|
127
142
|
- spec/spec_helper.rb
|
128
143
|
- spec/telegram_meetup_bot/calendar_spec.rb
|
144
|
+
- spec/telegram_meetup_bot/commands_handler_spec.rb
|
129
145
|
- spec/telegram_meetup_bot/message_parser_spec.rb
|
130
146
|
- spec/telegram_meetup_bot/params_parser_spec.rb
|
131
147
|
- telegram_meetup_bot.gemspec
|
132
|
-
homepage:
|
148
|
+
homepage: https://github.com/mendab1e/telegram_meetup_bot
|
133
149
|
licenses:
|
134
150
|
- MIT
|
135
151
|
metadata: {}
|
@@ -156,5 +172,6 @@ summary: Telegram bot for meetups organisation
|
|
156
172
|
test_files:
|
157
173
|
- spec/spec_helper.rb
|
158
174
|
- spec/telegram_meetup_bot/calendar_spec.rb
|
175
|
+
- spec/telegram_meetup_bot/commands_handler_spec.rb
|
159
176
|
- spec/telegram_meetup_bot/message_parser_spec.rb
|
160
177
|
- spec/telegram_meetup_bot/params_parser_spec.rb
|