icqbot 0.1.1 → 0.1.2
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 +4 -4
- data/.gitignore +1 -1
- data/README.md +4 -1
- data/doc/bot.md +72 -0
- data/doc/button.md +12 -0
- data/doc/event.md +33 -0
- data/doc/message.md +20 -0
- data/doc/overview.md +11 -0
- data/doc/user.md +6 -0
- data/icqbot.gemspec +5 -3
- data/lib/icqbot.rb +1 -0
- data/lib/icqbot/bot.rb +2 -0
- data/lib/icqbot/event.rb +6 -0
- data/lib/icqbot/functional/chats/get_admins.rb +13 -0
- data/lib/icqbot/functional/chats/get_blocked_users.rb +13 -0
- data/lib/icqbot/functional/chats/get_members.rb +14 -0
- data/lib/icqbot/urls_api.rb +8 -5
- metadata +21 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad954e93e3dfea76ebf298daf4ac1eaccdbbd09cbf455961d7e059682c410e6b
|
4
|
+
data.tar.gz: 57c3ff74c3367bd8de40e73c24204155061e69278c0ae90ac3a44776e112e170
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a033630de3734747ed6f07ab28c579bd2cc113afb8d64c9a73803f40fef5285c88b3df0e8d1906ffbb4c1def41d7d92df1c1b8e0a2e716546d25bf007b29e846
|
7
|
+
data.tar.gz: 344731d2f7c803bcdb2d5f486cfb2f3ac7c5dcfb348af9ac9ecc713c1ebf17395f43973bd20040cf483ee11fc30e902d28effcfdfe8d1207a4e119040ce2a502
|
data/.gitignore
CHANGED
data/README.md
CHANGED
data/doc/bot.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
|
2
|
+
Bot
|
3
|
+
---
|
4
|
+
|
5
|
+
File: `lib/icqbot/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
|
+
## Отправить сообщение
|
27
|
+
```ruby
|
28
|
+
def send_msg msg, chat_id # -> Hash
|
29
|
+
```
|
30
|
+
1. `msg` - это объект типа [Message](./message.md), либо обычный String.
|
31
|
+
2. `chat_id` - ID чата, куда надо отправить сообщение.
|
32
|
+
|
33
|
+
## Удалить сообщение
|
34
|
+
```ruby
|
35
|
+
def delete_msg msg_id, chat_id # -> Hash
|
36
|
+
```
|
37
|
+
1. `msg_id` - ID сообщения, которое надо удалить.
|
38
|
+
2. `chat_id` - ID чата, откуда надо удалить сообщение.
|
39
|
+
|
40
|
+
## Изменить сообщение
|
41
|
+
```ruby
|
42
|
+
def edit_msg msg, msg_id, chat_id # -> Hash
|
43
|
+
```
|
44
|
+
1. `msg` - это объект типа [Message](./message.md), либо обычный String.
|
45
|
+
2. `msg_id` - ID сообщения, которое надо изменить.
|
46
|
+
3. `chat_id` - ID чата, где надо изменить сообщение.
|
47
|
+
|
48
|
+
# Chats
|
49
|
+
|
50
|
+
## Получить информацию о чате
|
51
|
+
```ruby
|
52
|
+
def get_info chat_id # -> Hash | User
|
53
|
+
```
|
54
|
+
1. `chat_id` - ID чата, информацию о котором надо получить.
|
55
|
+
|
56
|
+
## Получить список участников
|
57
|
+
```ruby
|
58
|
+
def get_members chat_id, cursor=nil # -> [Hash]
|
59
|
+
```
|
60
|
+
1. `chat_id` - ID чата, откуда надо получить список участников.
|
61
|
+
|
62
|
+
## Получить список заблокированных пользователей
|
63
|
+
```ruby
|
64
|
+
def get_blocked_users chat_id # -> [Hash]
|
65
|
+
```
|
66
|
+
1. `chat_id` - ID чата, откуда надо получить список заблокированных пользователей.
|
67
|
+
|
68
|
+
## Получить список aдминов
|
69
|
+
```ruby
|
70
|
+
def get_admins chat_id # -> [Hash]
|
71
|
+
```
|
72
|
+
1. `chat_id` - ID чата, откуда надо получить список aдминов.
|
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,33 @@
|
|
1
|
+
|
2
|
+
Event
|
3
|
+
---
|
4
|
+
|
5
|
+
File: `lib/icqbot/event.rb`
|
6
|
+
|
7
|
+
---
|
8
|
+
Класс для представления событий.
|
9
|
+
|
10
|
+
## Конструктор
|
11
|
+
```ruby
|
12
|
+
def initialize event_h
|
13
|
+
```
|
14
|
+
Принимает hash event из ICQ Bot API.
|
15
|
+
|
16
|
+
## Аттрибуты
|
17
|
+
```ruby
|
18
|
+
attr_reader :type, :text, :msg_id, :chat_id, :from
|
19
|
+
event.type # Тип события.
|
20
|
+
event.text # текст приходящего события(обычно текст сообщения от юзера).
|
21
|
+
event.msg_id # ID пришедшего сообщения.
|
22
|
+
event.chat_id # ID чата, в который пришло сообщения.
|
23
|
+
event.from # Hash | Информация от кого пришло сообщение.
|
24
|
+
```
|
25
|
+
|
26
|
+
## Типы событий
|
27
|
+
```ruby
|
28
|
+
module TypeEvent
|
29
|
+
NEW_MSG = 'newMessage'
|
30
|
+
EDITED_MSG = 'editedMessage'
|
31
|
+
DELETED_MSG = 'deletedMessage'
|
32
|
+
... # in working
|
33
|
+
```
|
data/doc/message.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Message
|
2
|
+
---
|
3
|
+
|
4
|
+
File: `lib/icqbot/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](./button.md)
|
20
|
+
```
|
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)** | Класс для представления пользователя |
|
data/doc/user.md
ADDED
data/icqbot.gemspec
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
+
require_relative './lib/icqbot.rb'
|
2
|
+
|
1
3
|
lib = File.expand_path('../lib', __FILE__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
5
|
|
4
6
|
Gem::Specification.new do |s|
|
5
7
|
s.name = "icqbot"
|
6
|
-
s.version =
|
8
|
+
s.version = ICQ::VERSION
|
7
9
|
s.authors = ["sheyber"]
|
8
10
|
s.email = ["ukt1@ro.ru"]
|
9
|
-
|
11
|
+
s.license = '0BSD'
|
10
12
|
|
11
13
|
s.summary = %q{Ruby wrapper for ICQ Bot API.}
|
12
14
|
s.description = %q{This gem is a simple and minimalistic library for creating ICQ bots.}
|
@@ -20,5 +22,5 @@ Gem::Specification.new do |s|
|
|
20
22
|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
23
|
s.require_paths = ['lib']
|
22
24
|
|
23
|
-
s.add_dependency 'requests'
|
25
|
+
s.add_dependency 'requests', '~> 1.0', '>= 1.0.2'
|
24
26
|
end
|
data/lib/icqbot.rb
CHANGED
data/lib/icqbot/bot.rb
CHANGED
@@ -7,6 +7,8 @@ require_relative './functional/send_msg.rb'
|
|
7
7
|
require_relative './functional/edit_msg.rb'
|
8
8
|
require_relative './functional/delete_msg.rb'
|
9
9
|
require_relative './functional/chats/get_info.rb'
|
10
|
+
require_relative './functional/chats/get_admins.rb'
|
11
|
+
require_relative './functional/chats/get_members.rb'
|
10
12
|
|
11
13
|
module ICQ
|
12
14
|
|
data/lib/icqbot/event.rb
CHANGED
@@ -2,6 +2,8 @@ require_relative '../icqbot.rb'
|
|
2
2
|
|
3
3
|
module ICQ
|
4
4
|
|
5
|
+
BOT_PREFIX = '/'
|
6
|
+
|
5
7
|
module TypeEvent
|
6
8
|
NEW_MSG = 'newMessage'
|
7
9
|
EDITED_MSG = 'editedMessage'
|
@@ -20,6 +22,10 @@ module ICQ
|
|
20
22
|
@from = event_h['payload']['from']
|
21
23
|
end
|
22
24
|
|
25
|
+
def prefix?
|
26
|
+
@text[0] == ICQ::BOT_PREFIX
|
27
|
+
end
|
28
|
+
|
23
29
|
def to_h; @event_h end
|
24
30
|
end
|
25
31
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative '../../bot.rb'
|
2
|
+
|
3
|
+
module ICQ
|
4
|
+
|
5
|
+
class Bot
|
6
|
+
def get_members chat_id, cursor=nil
|
7
|
+
# TODO: сделать что-то с cursor
|
8
|
+
_ = JSON::load Requests.get(
|
9
|
+
URLS_API::GET_MEMBRS, params: base_req(chat_id)).body
|
10
|
+
_['members']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/lib/icqbot/urls_api.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
|
2
2
|
module URLS_API
|
3
|
-
GET_EVENTS
|
4
|
-
SEND_MSG
|
5
|
-
EDIT_MSG
|
6
|
-
DEL_MSG
|
7
|
-
GET_INFO
|
3
|
+
GET_EVENTS = 'https://api.icq.net/bot/v1/events/get'
|
4
|
+
SEND_MSG = 'https://api.icq.net/bot/v1/messages/sendText'
|
5
|
+
EDIT_MSG = 'https://api.icq.net/bot/v1/messages/editText'
|
6
|
+
DEL_MSG = 'https://api.icq.net/bot/v1/messages/deleteMessages'
|
7
|
+
GET_INFO = 'https://api.icq.net/bot/v1/chats/getInfo'
|
8
|
+
GET_ADMINS = 'https://api.icq.net/bot/v1/chats/getAdmins'
|
9
|
+
GET_MEMBRS = 'https://api.icq.net/bot/v1/chats/getMembers'
|
10
|
+
GET_BLOCKED_USERS = 'https://api.icq.net/bot/v1/chats/getBlockedUsers'
|
8
11
|
end
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: icqbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sheyber
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: requests
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: 1.0.2
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
24
30
|
- - ">="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: 1.0.2
|
27
33
|
description: This gem is a simple and minimalistic library for creating ICQ bots.
|
28
34
|
email:
|
29
35
|
- ukt1@ro.ru
|
@@ -37,11 +43,20 @@ files:
|
|
37
43
|
- bin/5time_echo_and_end.rb
|
38
44
|
- bin/echo_bot.rb
|
39
45
|
- bin/send_text_with_button.rb
|
46
|
+
- doc/bot.md
|
47
|
+
- doc/button.md
|
48
|
+
- doc/event.md
|
49
|
+
- doc/message.md
|
50
|
+
- doc/overview.md
|
51
|
+
- doc/user.md
|
40
52
|
- icqbot.gemspec
|
41
53
|
- lib/icqbot.rb
|
42
54
|
- lib/icqbot/bot.rb
|
43
55
|
- lib/icqbot/event.rb
|
56
|
+
- lib/icqbot/functional/chats/get_admins.rb
|
57
|
+
- lib/icqbot/functional/chats/get_blocked_users.rb
|
44
58
|
- lib/icqbot/functional/chats/get_info.rb
|
59
|
+
- lib/icqbot/functional/chats/get_members.rb
|
45
60
|
- lib/icqbot/functional/delete_msg.rb
|
46
61
|
- lib/icqbot/functional/edit_msg.rb
|
47
62
|
- lib/icqbot/functional/send_msg.rb
|
@@ -49,7 +64,8 @@ files:
|
|
49
64
|
- lib/icqbot/urls_api.rb
|
50
65
|
- lib/icqbot/user.rb
|
51
66
|
homepage: https://github.com/sheyber/icqbot
|
52
|
-
licenses:
|
67
|
+
licenses:
|
68
|
+
- 0BSD
|
53
69
|
metadata:
|
54
70
|
homepage_uri: https://github.com/sheyber/icqbot
|
55
71
|
post_install_message:
|