vkteamsbot 0.2.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 700725e6763b2665ad67bc030ab76de1bc138248
4
+ data.tar.gz: 596ef5a75e7d36cc1cfd21f7416219ce369f9841
5
+ SHA512:
6
+ metadata.gz: 8de29070d1b4db8a0a87013f515cd8fc069c9181fd8045564578bf832e7e3e8745b184da2feb62720f7cfe23a7dfebd1df19c5725506261a71e4ec4d3f1fbc62
7
+ data.tar.gz: 659e838286a47429131cc4794d1bb923702731dd7a48fcb096881261c951b9310129fac0f10073401d2e23e476f8b1bdf4c2efd8bbf159352dd410e4aca663d7
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ .bundle
2
+ test
3
+ Gemfile.lock
4
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'requests', '~> 1.0', '>= 1.0.2'
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+
2
+ vkteams-bot-ruby :diamonds:
3
+ ------------
4
+ Ruby wrapper for [VK Teams Bot API](https://myteam.mail.ru/botapi/)
5
+
6
+ ----
7
+
8
+ ## Installation
9
+ ```
10
+ gem install vkteamsbot
11
+ ```
12
+
13
+ ## Usage
14
+ Simple echo bot:
15
+ ```ruby
16
+ require 'vkteamsbot'
17
+
18
+ VKTeams::Bot.new('token') do |bot|
19
+ bot.listen do |event|
20
+ bot.send_msg("echo #{event.text}", event.chat_id)
21
+ end
22
+ end
23
+ ```
24
+ more examples in `bin/`
25
+
26
+ ## Docs
27
+ * **[Documentation](./doc/overview.md)**
28
+
29
+ ## Credits
30
+ * Thank you Cyril David (author by gem requests)
31
+ * And thank you Matz for wonderful Ruby
@@ -0,0 +1,10 @@
1
+ require_relative '../lib/vkteamsbot.rb'
2
+
3
+ times, max_time = 0, 5
4
+
5
+ VKTeams::Bot.new('token') do |bot|
6
+ bot.listen do |event|
7
+ bot.send_msg("echo '#{event.text}'", event.chat_id)
8
+ bot.loop = false if (times += 1) != max_time
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'vkteamsbot'
2
+
3
+ bot = VKTeams::Bot.new('TOKEN')
4
+
5
+ bot.add_handler '/help', -> (event) do
6
+ bot.send_msg 'command help don\'t work', event.chat_id
7
+ end
8
+
9
+ bot.add_handler '/disable', -> (event) do
10
+ exit 0
11
+ end
12
+
13
+ bot.listen {}
data/bin/echo_bot.rb ADDED
@@ -0,0 +1,7 @@
1
+ require_relative '../lib/vkteamsbot.rb'
2
+
3
+ VKTeams::Bot.new('token') do |bot|
4
+ bot.listen do |event|
5
+ bot.send_msg "echo #{event.text}", event.chat_id
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../lib/vkteamsbot.rb'
2
+
3
+ VKTeams::Bot.new('token') do |bot|
4
+ bot.listen do |event|
5
+ msg = VKTeams::Message.new(
6
+ "echo #{event.text}", VKTeams::Button.new('google', url: 'google.com'))
7
+ bot.send_msg msg, event.chat_id
8
+ end
9
+ end
data/doc/bot.md ADDED
@@ -0,0 +1,139 @@
1
+
2
+ Bot
3
+ ---
4
+
5
+ File: `lib/vkteamsbot/bot.rb`
6
+
7
+ ---
8
+
9
+ ## Конструктор
10
+ ```ruby
11
+ def initialize token, pool_time=30
12
+ ```
13
+
14
+ ## Event loop
15
+ ```ruby
16
+ def listen
17
+ ```
18
+ Принимает блок, которому передаётся экземпляр класса [Event](./event.md)(последние событие)
19
+
20
+ ## Закрыть Event loop
21
+ Чтобы закрыть цикл нужно аттрибуту объекта Bot `loop` установить `false`.
22
+ ```ruby
23
+ bot.loop = false
24
+ ```
25
+
26
+ ## Добавить handler(обработчик событий)
27
+ ```ruby
28
+ def add_handler text, handler
29
+ ```
30
+ 1. `text` - текст события.
31
+ 2. `handler` - анонимная функция(принимает объект типа [Event](./event.md)), которая сработает при получение события с текстом идентичном `text`.
32
+
33
+ ## Добавить callback handler
34
+ ```ruby
35
+ def add_callback_handler data, handler
36
+ ```
37
+ 1. `data` - текст события..
38
+ 2. `handler` - анонимная функция(принимает объект типа [Event](./event.md)), которая сработает при получение callback события с идентификатор идентичным `data`.
39
+
40
+ ## Отправить сообщение
41
+ ```ruby
42
+ def send_msg msg, chat_id # -> Hash
43
+ ```
44
+ 1. `msg` - это объект типа [Message](./message.md), либо обычный String.
45
+ 2. `chat_id` - ID чата, куда надо отправить сообщение.
46
+
47
+ ## Удалить сообщение
48
+ ```ruby
49
+ def delete_msg msg_id, chat_id # -> Hash
50
+ ```
51
+ 1. `msg_id` - ID сообщения, которое надо удалить.
52
+ 2. `chat_id` - ID чата, откуда надо удалить сообщение.
53
+
54
+ ## Изменить сообщение
55
+ ```ruby
56
+ def edit_msg msg, msg_id, chat_id # -> Hash
57
+ ```
58
+ 1. `msg` - это объект типа [Message](./message.md), либо обычный String.
59
+ 2. `msg_id` - ID сообщения, которое надо изменить.
60
+ 3. `chat_id` - ID чата, где надо изменить сообщение.
61
+
62
+ # Chats
63
+
64
+ ## Получить информацию о чате
65
+ ```ruby
66
+ def get_info chat_id # -> Hash | User
67
+ ```
68
+ 1. `chat_id` - ID чата, информацию о котором надо получить.
69
+
70
+ ## Получить список участников
71
+ ```ruby
72
+ def get_members chat_id, cursor=nil # -> [Hash]
73
+ ```
74
+ 1. `chat_id` - ID чата, откуда надо получить список участников.
75
+
76
+ ## Получить список заблокированных пользователей
77
+ ```ruby
78
+ def get_blocked_users chat_id # -> [Hash]
79
+ ```
80
+ 1. `chat_id` - ID чата, откуда надо получить список заблокированных пользователей.
81
+
82
+ ## Получить список aдминов
83
+ ```ruby
84
+ def get_admins chat_id # -> [Hash]
85
+ ```
86
+ 1. `chat_id` - ID чата, откуда надо получить список aдминов.
87
+
88
+ # Chat administration
89
+ Для работы этих методов бот должен иметь права администрации.
90
+
91
+ ## Установка названия чата
92
+ ```ruby
93
+ def set_title chat_id, title # -> Hash
94
+ ```
95
+ 1. `chat_id` - ID чата.
96
+ 2. `title` - новое название чата.
97
+
98
+ ## Установка описания чата
99
+ ```ruby
100
+ def set_about chat_id, about # -> Hash
101
+ ```
102
+ 1. `chat_id` - ID чата.
103
+ 2. `about` - новое описание чата.
104
+
105
+ ## Установка правил чата
106
+ ```ruby
107
+ def set_rules chat_id, rules # -> Hash
108
+ ```
109
+ 1. `chat_id` - ID чата.
110
+ 2. `rules` - правила чата.
111
+
112
+ ## Закрепить сообщение
113
+ ```ruby
114
+ def pin_msg msg_id, chat_id # -> Hash
115
+ ```
116
+ 1. `msg_id` - ID сообщения, что нужно закрепить.
117
+ 2. `chat_id` - ID чата.
118
+
119
+ ## Открепить сообщение
120
+ ```ruby
121
+ def unpin_msg msg_id, chat_id # -> Hash
122
+ ```
123
+ 1. `msg_id` - ID сообщения, что нужно открепить.
124
+ 2. `chat_id` - ID чата.
125
+
126
+ ## Забанить участника
127
+ ```ruby
128
+ def block_user user_id, chat_id, del_last_msg=false # -> Hash
129
+ ```
130
+ 1. `user_id` - ID пользователя, который должен отлететь в бан.
131
+ 2. `chat_id` - ID чата, где забанят.
132
+ 3. `del_last_msg` - удалить или нет последние сообщение пользователя.
133
+
134
+ ## Разбанить участника
135
+ ```ruby
136
+ def unblock_user user_id, chat_id # -> Hash
137
+ ```
138
+ 1. `user_id` - ID пользователя, который должен вернуться из бана.
139
+ 2. `chat_id` - ID чата, где разабанят.
data/doc/button.md ADDED
@@ -0,0 +1,12 @@
1
+
2
+ Button
3
+ ---
4
+
5
+ ## Конструктор
6
+ ```ruby
7
+ def initialize text, style:'attention', url:nil, call_back_data:nil
8
+ ```
9
+ 1. `text` - текст кнопки(String).
10
+ 2. `style` - стиль кнопки.
11
+ 3. `url` - ссылка, по которой отправит вас кнопка.
12
+ 4. `call_back_data` - код для ответа.
data/doc/event.md ADDED
@@ -0,0 +1,41 @@
1
+
2
+ Event
3
+ ---
4
+
5
+ File: `lib/vkteamsbot/event.rb`
6
+
7
+ ---
8
+ Класс для представления событий.
9
+
10
+ ## Конструктор
11
+ ```ruby
12
+ def initialize event_h
13
+ ```
14
+ Принимает hash event из VK Teams Bot API.
15
+
16
+ ## Аттрибуты
17
+ ```ruby
18
+ attr_reader :type, :text, :msg_id, :chat_id, :from,
19
+ :data, :query_id
20
+ ```
21
+ ```ruby
22
+ event.type # Тип события.
23
+ event.text # текст приходящего события(обычно текст сообщения от юзера).
24
+ event.msg_id # ID пришедшего сообщения.
25
+ event.chat_id # ID чата, в который пришло сообщения.
26
+ event.from # Hash | Информация от кого пришло сообщение.
27
+ # -- Аттрибуты для callback event --
28
+ event.data
29
+ event.query_id
30
+ ```
31
+
32
+
33
+ ## Типы событий
34
+ ```ruby
35
+ module TypeEvent
36
+ NEW_MSG = 'newMessage'
37
+ EDITED_MSG = 'editedMessage'
38
+ DELETED_MSG = 'deletedMessage'
39
+ CALLBACK = 'callbackQuery'
40
+ ... # in working
41
+ ```
data/doc/message.md ADDED
@@ -0,0 +1,29 @@
1
+ Message
2
+ ---
3
+
4
+ File: `lib/vkteamsbot/message.rb`
5
+
6
+ ---
7
+
8
+ ## Конструктор
9
+ ```ruby
10
+ def initialize text, *keyboard
11
+ ```
12
+ 1. `text` - текст сообщения(String).
13
+ 2. `*keyboard` - массив объектов [Button](./button.md).
14
+
15
+ ## Аттрибуты
16
+ ```ruby
17
+ attr_reader :text, :keyboard
18
+ msg.text # текст сообщения(String)
19
+ msg.keyboard # массив объектов Button
20
+ ```
21
+
22
+ ## Добавить кнопку
23
+ ```ruby
24
+ def << btn
25
+ ```
26
+ ```ruby
27
+ alias_method :append, :<<
28
+ ```
29
+ 1. `btn` - объект типа [Button](./button.md)
data/doc/overview.md ADDED
@@ -0,0 +1,11 @@
1
+
2
+ # overview of docs
3
+
4
+ *Пардон за мой французский*
5
+
6
+ | Класс | Описание |
7
+ | --- | --- |
8
+ | **[Bot](./bot.md)** | Экземпляр этого класса и есть ваш бот, что выполняет всевозможные действия |
9
+ | **[Event](./event.md)** | Представление для приходящих от API events |
10
+ | **[Message](./message.md)** | Класс, экземпляры которого можно передать в `send_msg` в качестве `msg` |
11
+ | **[User](./user.md)** | Класс для представления пользователя |
@@ -0,0 +1,84 @@
1
+ require 'json'
2
+
3
+ require_relative '../vkteamsbot.rb'
4
+ require_relative './urls_api.rb'
5
+
6
+ require_relative './functional/send_msg.rb'
7
+ require_relative './functional/edit_msg.rb'
8
+ require_relative './functional/delete_msg.rb'
9
+ require_relative './functional/chats/get_info.rb'
10
+ require_relative './functional/chats/get_admins.rb'
11
+ require_relative './functional/chats/get_members.rb'
12
+ require_relative './functional/chats/administration/set_title.rb'
13
+ require_relative './functional/chats/administration/set_about.rb'
14
+ require_relative './functional/chats/administration/set_rules.rb'
15
+ require_relative './functional/chats/administration/pin_unpin_msg.rb'
16
+ require_relative './functional/chats/administration/block_unblock_user.rb'
17
+
18
+ module VKTeams
19
+
20
+ class Bot
21
+ attr_accessor :loop
22
+
23
+ def initialize token, pool_time=30, verbose=false
24
+ @token = token
25
+ @pool_time = pool_time
26
+ @last_event_id = 0
27
+ @loop = true
28
+ @handlers = {}
29
+ @callback_handlers = {}
30
+ @verbose = verbose
31
+ yield self if block_given?
32
+ end
33
+
34
+ def get_events # /events/get
35
+ params = {
36
+ 'token': @token,
37
+ 'lastEventId': @last_event_id,
38
+ 'pollTime': @pool_time
39
+ }
40
+ Requests.get(API.get_events, params: params)
41
+ end
42
+
43
+ def listen # event loop
44
+ while @loop
45
+ events = json_load(get_events.body)
46
+ if events and events['events'] and events['events'] != []
47
+ last_event = events['events'].last
48
+ @last_event_id = last_event['eventId']
49
+ last_event = VKTeams::Event.new last_event
50
+ if @handlers.has_key? last_event.text
51
+ @handlers[last_event.text].call last_event
52
+ elsif last_event.type == VKTeams::TypeEvent::CALLBACK and @callback_handlers.has_key? last_event.data
53
+ @callback_handlers[last_event.text].call last_event
54
+ else
55
+ yield last_event
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ def add_handler text, handler
62
+ @handlers[text] = handler
63
+ end
64
+
65
+ def add_callback_handler data, handler
66
+ @callback_handlers[data] = handler
67
+ end
68
+
69
+ private
70
+ def base_req chat_id
71
+ {
72
+ 'token': @token,
73
+ 'chatId': chat_id
74
+ }
75
+ end
76
+
77
+ def json_load r
78
+ result = JSON::load r
79
+ puts result if @verbose
80
+ result
81
+ end
82
+ end
83
+
84
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../vkteamsbot.rb'
2
+
3
+ module VKTeams
4
+
5
+ BOT_PREFIX = '/'
6
+
7
+ module TypeEvent
8
+ NEW_MSG = 'newMessage'
9
+ EDITED_MSG = 'editedMessage'
10
+ DELETED_MSG = 'deletedMessage'
11
+ CALLBACK = 'callbackQuery'
12
+ end
13
+
14
+ class Event
15
+ attr_reader :type, :text, :msg_id, :chat_id, :from,
16
+ :data, :query_id
17
+
18
+ def initialize event_h
19
+ # TODO: больше информации
20
+ @event_h = event_h
21
+ @type = event_h['type']
22
+ @from = event_h['payload']['from']
23
+ if @type != VKTeams::TypeEvent::CALLBACK
24
+ @text = event_h['payload']['text']
25
+ @msg_id = event_h['payload']['msgId']
26
+ @chat_id = event_h['payload']['chat']['chatId']
27
+ else
28
+ @data = event_h['payload']['callbackData']
29
+ @query_id = event_h['payload']['queryId']
30
+ @chat_id = event_h['message']['chat']['chatId']
31
+ end
32
+ end
33
+
34
+ def prefix?
35
+ @text[0] == VKTeams::BOT_PREFIX if @text
36
+ end
37
+
38
+ def to_h; @event_h end
39
+ def to_s; "Event(#{@type}" + (@text ? ", #{@text}" : '') + ')' end
40
+ end
41
+
42
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def block_user user_id, chat_id, del_last_msg=false
7
+ params = base_req_for_block_unblock_user user_id, chat_id, del_last_msg
8
+ json_load Requests.get(
9
+ API.block_user, params: params).body
10
+ end
11
+
12
+ def unblock_user user_id, chat_id
13
+ params = base_req_for_block_unblock_user user_id, chat_id
14
+ json_load Requests.get(
15
+ API.unblock_user, params: params).body
16
+ end
17
+
18
+ private
19
+ def base_req_for_block_unblock_user user_id, chat_id, del_last_msg=nil
20
+ params = base_req chat_id
21
+ params['userId'] = user_id
22
+ params['delLastMessages'] = del_last_msg if del_last_msg
23
+ return params
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,21 @@
1
+ require_relative '../../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def pin_msg msg_id, chat_id
7
+ params = base_req chat_id
8
+ params['msgId'] = msg_id
9
+ json_load Requests.get(
10
+ API.pin_message, params: params).body
11
+ end
12
+
13
+ def unpin_msg msg_id, chat_id
14
+ params = base_req chat_id
15
+ params['msgId'] = msg_id
16
+ json_load Requests.get(
17
+ API.unpin_message, params: params).body
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def set_about chat_id, about
7
+ params = base_req chat_id
8
+ params['about'] = about
9
+ json_load Requests.get(
10
+ API.set_about, params: params).body
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def set_rules chat_id, rules
7
+ params = base_req chat_id
8
+ params['rules'] = rules
9
+ json_load Requests.get(
10
+ API.set_rules, params: params).body
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def set_title chat_id, title
7
+ params = base_req chat_id
8
+ params['title'] = title
9
+ json_load Requests.get(
10
+ API.set_title, params: params).body
11
+ end
12
+
13
+ def title= o
14
+ set_title *o
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def get_admins chat_id
7
+ _ = json_load Requests.get(
8
+ API.get_admins, params: base_req(chat_id)).body
9
+ _['admins']
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def get_blocked_users chat_id
7
+ _ = json_load Requests.get(
8
+ API.get_blocked_users, params: base_req(chat_id)).body
9
+ _['users']
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def get_info chat_id
7
+ # TODO: make a class for chats, kind of
8
+ params = base_req chat_id
9
+ json = json_load Requests.get(API.get_info, params: params).body
10
+ return VKTeams::User.new json if json['firstName']
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def get_members chat_id, cursor=nil
7
+ # TODO: сделать что-то с cursor
8
+ _ = json_load Requests.get(
9
+ API.get_members, params: base_req(chat_id)).body
10
+ _['members']
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def delete_msg msg_id, chat_id
7
+ # FIXME: fix this trash
8
+ params = base_req chat_id
9
+ r = API.delete_messages + "?token=#{params[:token]}&chatId=#{chat_id}&msgId=#{msg_id}" # HACK: super trash
10
+ json_load Requests.get(r).body
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def edit_msg msg, msg_id, chat_id
7
+ params = create_message_params msg, chat_id
8
+ params['msgId'] = msg_id
9
+ json_load Requests.get(API.edit_text, params: params).body
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../bot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Bot
6
+ def send_msg msg, chat_id, parseMode
7
+ params = create_message_params msg, chat_id, parseMode
8
+ json_load Requests.get(API.send_text, params: params).body
9
+ end
10
+
11
+ private
12
+ def create_message_params msg, chat_id, parseMode
13
+ params = base_req chat_id
14
+ if msg.is_a? VKTeams::Message
15
+ params['text'] = msg.text
16
+ if msg.keyboard and msg.keyboard != []
17
+ kb = msg.keyboard.map(&:to_h).map(&:to_json)
18
+ params['inlineKeyboardMarkup'] = "[[#{kb.join(',')}]]"
19
+ end
20
+ elsif msg.is_a? String
21
+ params['text'] = msg
22
+ else
23
+ raise ArgumentError.new "message can't be a #{msg.class}"
24
+ end
25
+ params['parseMode'] = parseMode unless parseMode.nil?
26
+ return params
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../vkteamsbot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class Message
6
+ attr_reader :text, :keyboard
7
+
8
+ def initialize obj, *keyboard
9
+ @text = obj
10
+ @keyboard = keyboard.compact
11
+ end
12
+
13
+ def << btn
14
+ return @keyboard << btn if btn.is_a? VKTeams::Button
15
+ raise ArgumentError.new 'btn must be a Button'
16
+ end
17
+
18
+ alias_method :append, :<<
19
+ end
20
+
21
+ class Button
22
+ def initialize text, style:'attention', url:nil, call_back_data:nil
23
+ @button = {
24
+ 'text': text,
25
+ 'style': style,
26
+ }
27
+ @button['url'] = url if url
28
+ @button['callbackData'] = call_back_data if call_back_data
29
+ end
30
+
31
+ def to_h
32
+ @button
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,56 @@
1
+ module VKTeams
2
+ module API
3
+ @@base_url = "https://myteam.mail.ru/bot/v1"
4
+ def self.base_url
5
+ @@base_url
6
+ end
7
+ def self.base_url=(base_url)
8
+ @@base_url = base_url
9
+ end
10
+ def self.get_events
11
+ @@base_url + '/events/get'
12
+ end
13
+ def self.send_text
14
+ @@base_url + '/messages/sendText'
15
+ end
16
+ def self.edit_text
17
+ @@base_url + '/messages/editText'
18
+ end
19
+ def self.delete_messages
20
+ @@base_url + '/messages/deleteMessages'
21
+ end
22
+ def self.get_info
23
+ @@base_url + '/chats/getInfo'
24
+ end
25
+ def self.get_admins
26
+ @@base_url + '/chats/getAdmins'
27
+ end
28
+ def self.get_members
29
+ @@base_url + '/chats/getMembers'
30
+ end
31
+ def self.get_blocked_users
32
+ @@base_url + '/chats/getBlockedUsers'
33
+ end
34
+ def self.set_title
35
+ @@base_url + '/chats/setTitle'
36
+ end
37
+ def self.set_about
38
+ @@base_url + '/chats/setAbout'
39
+ end
40
+ def self.set_rules
41
+ @@base_url + '/chats/setRules'
42
+ end
43
+ def self.pin_message
44
+ @@base_url + '/chats/pinMessage'
45
+ end
46
+ def self.unpin_message
47
+ @@base_url + '/chats/unpinMessage'
48
+ end
49
+ def self.block_user
50
+ @@base_url + '/chats/blockUser'
51
+ end
52
+ def self.unblock_user
53
+ @@base_url + '/chats/unblockUser'
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../vkteamsbot.rb'
2
+
3
+ module VKTeams
4
+
5
+ class User
6
+ attr_reader :first_name, :last_name, :photo, :type
7
+
8
+ def initialize user_h
9
+ @first_name = user_h['firstName']
10
+ @last_name = user_h['lastName']
11
+ @photo = user_h['photo'].first['url']
12
+ @type = user_h['type']
13
+ end
14
+ end
15
+
16
+ end
data/lib/vkteamsbot.rb ADDED
@@ -0,0 +1,10 @@
1
+ require "requests/sugar"
2
+
3
+ require_relative './vkteamsbot/bot.rb'
4
+ require_relative './vkteamsbot/event.rb'
5
+ require_relative './vkteamsbot/user.rb'
6
+ require_relative './vkteamsbot/message.rb'
7
+
8
+ module VKTeams
9
+ VERSION = '0.2.1'
10
+ end
@@ -0,0 +1,26 @@
1
+ require_relative './lib/vkteamsbot.rb'
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "vkteamsbot"
8
+ s.version = VKTeams::VERSION
9
+ s.authors = ["Protska Arthur"]
10
+ s.email = ["akkrat-nocode@outlook.com"]
11
+ s.license = '0BSD'
12
+
13
+ s.summary = %q{Ruby wrapper for VK Teams Bot API.}
14
+ s.description = %q{This gem is a simple and minimalistic library for creating VK Teams bots.}
15
+ s.homepage = "https://github.com/akkrat/ruby-vkteamsbot"
16
+ # s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
17
+
18
+ s.metadata["homepage_uri"] = s.homepage
19
+
20
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ s.bindir = 'exe'
22
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ s.require_paths = ['lib']
24
+
25
+ s.add_dependency 'requests', '~> 1.0', '>= 1.0.2'
26
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vkteamsbot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Protska Arthur
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: requests
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.2
33
+ description: This gem is a simple and minimalistic library for creating VK Teams bots.
34
+ email:
35
+ - akkrat-nocode@outlook.com
36
+ executables: []
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - ".gitignore"
41
+ - Gemfile
42
+ - README.md
43
+ - bin/5time_echo_and_end.rb
44
+ - bin/bot_with_handlers.rb
45
+ - bin/echo_bot.rb
46
+ - bin/send_text_with_button.rb
47
+ - doc/bot.md
48
+ - doc/button.md
49
+ - doc/event.md
50
+ - doc/message.md
51
+ - doc/overview.md
52
+ - lib/vkteamsbot.rb
53
+ - lib/vkteamsbot/bot.rb
54
+ - lib/vkteamsbot/event.rb
55
+ - lib/vkteamsbot/functional/chats/administration/block_unblock_user.rb
56
+ - lib/vkteamsbot/functional/chats/administration/pin_unpin_msg.rb
57
+ - lib/vkteamsbot/functional/chats/administration/set_about.rb
58
+ - lib/vkteamsbot/functional/chats/administration/set_rules.rb
59
+ - lib/vkteamsbot/functional/chats/administration/set_title.rb
60
+ - lib/vkteamsbot/functional/chats/get_admins.rb
61
+ - lib/vkteamsbot/functional/chats/get_blocked_users.rb
62
+ - lib/vkteamsbot/functional/chats/get_info.rb
63
+ - lib/vkteamsbot/functional/chats/get_members.rb
64
+ - lib/vkteamsbot/functional/delete_msg.rb
65
+ - lib/vkteamsbot/functional/edit_msg.rb
66
+ - lib/vkteamsbot/functional/send_msg.rb
67
+ - lib/vkteamsbot/message.rb
68
+ - lib/vkteamsbot/urls_api.rb
69
+ - lib/vkteamsbot/user.rb
70
+ - vkteamsbot.gemspec
71
+ homepage: https://github.com/akkrat/ruby-vkteamsbot
72
+ licenses:
73
+ - 0BSD
74
+ metadata:
75
+ homepage_uri: https://github.com/akkrat/ruby-vkteamsbot
76
+ post_install_message:
77
+ rdoc_options: []
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ requirements: []
91
+ rubyforge_project:
92
+ rubygems_version: 2.4.8
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: Ruby wrapper for VK Teams Bot API.
96
+ test_files: []