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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a2b93dc489f8308a4ce781d79b2e797189d464d4f285449a2f8ef01b1a45a3c
4
- data.tar.gz: f9f268a15b98f0cf710ed87ea43a6edb348b7f39445506e884f0b859b9bdd4e2
3
+ metadata.gz: ad954e93e3dfea76ebf298daf4ac1eaccdbbd09cbf455961d7e059682c410e6b
4
+ data.tar.gz: 57c3ff74c3367bd8de40e73c24204155061e69278c0ae90ac3a44776e112e170
5
5
  SHA512:
6
- metadata.gz: e792f9b3c3693500645dc3fa772d23140de16e85f6a2d0fa01f1618a50be7dd5597e6a7d9f5d6dc4b9616ba86d7b9f3ae423ae996fb58c74b656d1ff2c77457a
7
- data.tar.gz: 98e908b1f8caca89d2f5e3d7b054f5a9b95d8d03c9ff4c0844604a926825967ba2c6e15f79eea9f317b6bf2be096b0fe94782acc12026a607a79916d5f8b0941
6
+ metadata.gz: a033630de3734747ed6f07ab28c579bd2cc113afb8d64c9a73803f40fef5285c88b3df0e8d1906ffbb4c1def41d7d92df1c1b8e0a2e716546d25bf007b29e846
7
+ data.tar.gz: 344731d2f7c803bcdb2d5f486cfb2f3ac7c5dcfb348af9ac9ecc713c1ebf17395f43973bd20040cf483ee11fc30e902d28effcfdfe8d1207a4e119040ce2a502
data/.gitignore CHANGED
@@ -1,3 +1,3 @@
1
1
  .bundle
2
2
  test
3
- Gemfile.lock
3
+ Gemfile.lock
data/README.md CHANGED
@@ -22,6 +22,9 @@ ICQ::Bot.new('token') do |bot|
22
22
  end
23
23
  ```
24
24
 
25
- ### Credits
25
+ ## Docs
26
+ * **[Documentation](./doc/overview.md)**
27
+
28
+ ## Credits
26
29
  * Thank you Cyril David (author by gem requests)
27
30
  * And thank you Matz for wonderful Ruby
@@ -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дминов.
@@ -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` - код для ответа.
@@ -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
+ ```
@@ -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
+ ```
@@ -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,6 @@
1
+ Bot
2
+ ---
3
+
4
+ File: `lib/icqbot/user.rb`
5
+
6
+ ---
@@ -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 = "0.1.1"
8
+ s.version = ICQ::VERSION
7
9
  s.authors = ["sheyber"]
8
10
  s.email = ["ukt1@ro.ru"]
9
- # s.license = 'MIT'
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
@@ -6,4 +6,5 @@ require_relative './icqbot/user.rb'
6
6
  require_relative './icqbot/message.rb'
7
7
 
8
8
  module ICQ
9
+ VERSION = '0.1.2'
9
10
  end
@@ -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
 
@@ -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,13 @@
1
+ require_relative '../../bot.rb'
2
+
3
+ module ICQ
4
+
5
+ class Bot
6
+ def get_admins chat_id
7
+ _ = JSON::load Requests.get(
8
+ URLS_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 ICQ
4
+
5
+ class Bot
6
+ def get_blocked_users chat_id
7
+ _ = JSON::load Requests.get(
8
+ URLS_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 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
@@ -1,8 +1,11 @@
1
1
 
2
2
  module URLS_API
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'
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.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-22 00:00:00.000000000 Z
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: '0'
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: '0'
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: