icqbot 0.1.5 → 0.1.6

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: 2c8f903bddb535995d723b2bb17ad4a1a2cd0856a053284ae4f66c2dd72ac163
4
- data.tar.gz: b44c70c7cc4536f6093b2909a6c535f24ff3e19d47ea20d9d08d86f23eab9e98
3
+ metadata.gz: 8a1b8905027bb3b08fccc7709c576dc9f8d12f3dab7aae4198c7a6f4206eeaf6
4
+ data.tar.gz: e86af0281b524e830d38368a7956d9c88ff77d87235bcdc2bee3448c736bba7e
5
5
  SHA512:
6
- metadata.gz: 76ff8bbf9f9c7d669c29fe6b365d9edbf047ea3883ccfe8069155def240a19043458e96c1957fd6d1f7ef69f08ce92f2a3833ec1f86972dcb875417e8668ee7b
7
- data.tar.gz: 1e0fa65eeacc00d35fdcd3bf69de542090a433e743898ecf631cbebde75cb52c4434bb51d28ab34fc3bea444e01ac07b1cefca1d4974001e632866a383652452
6
+ metadata.gz: 3b78278215ab10db856f55b908fc045fd1793ca0e1de0d4afc9f7a6b7986c19697e2b3ad6acb1d68d5b023c66bfc14acba9177d092d43f8a13f61321c9677090
7
+ data.tar.gz: c419c1cfc80b5896666307eb9cb369f9fc4a1f337263f8406313094514717d1bee4cec9e64d9b21c654f5cfbf325af200f54020c2de3db033819708518f74604
@@ -0,0 +1,13 @@
1
+ require 'icqbot'
2
+
3
+ bot = ICQ::Bot.new('TOKEN')
4
+
5
+ bot.add_event_handler '/help', -> (event) do
6
+ bot.send_msg 'command help don\'t work', event.chat_id
7
+ end
8
+
9
+ bot.add_event_handler '/disable', -> (event) do
10
+ exit 0
11
+ end
12
+
13
+ bot.listen {}
data/doc/bot.md CHANGED
@@ -23,6 +23,20 @@ def listen
23
23
  bot.loop = false
24
24
  ```
25
25
 
26
+ ## Добавить event handler(обработчик событий)
27
+ ```ruby
28
+ def add_event_handler name, handler
29
+ ```
30
+ 1. `name` - имя события.
31
+ 2. `handler` - анонимная функция(принимает объект типа [Event](./event.md)), которая сработает при получение события с текстом идентичном названию обработчику.
32
+
33
+ ## Добавить callback event handler
34
+ ```ruby
35
+ def add_callback_event_handler name, handler
36
+ ```
37
+ 1. `name` - имя события.
38
+ 2. `handler` - анонимная функция(принимает объект типа [Event](./event.md)), которая сработает при получение callback события с идентификатор идентичным названию обработчика.
39
+
26
40
  ## Отправить сообщение
27
41
  ```ruby
28
42
  def send_msg msg, chat_id # -> Hash
@@ -1,26 +1,26 @@
1
- require_relative './lib/icqbot.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 = "icqbot"
8
- s.version = ICQ::VERSION
9
- s.authors = ["sheyber"]
10
- s.email = ["ukt1@ro.ru"]
11
- s.license = '0BSD'
12
-
13
- s.summary = %q{Ruby wrapper for ICQ Bot API.}
14
- s.description = %q{This gem is a simple and minimalistic library for creating ICQ bots.}
15
- s.homepage = "https://github.com/sheyber/icqbot"
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'
1
+ require_relative './lib/icqbot.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 = "icqbot"
8
+ s.version = ICQ::VERSION
9
+ s.authors = ["sheyber"]
10
+ s.email = ["ukt1@ro.ru"]
11
+ s.license = '0BSD'
12
+
13
+ s.summary = %q{Ruby wrapper for ICQ Bot API.}
14
+ s.description = %q{This gem is a simple and minimalistic library for creating ICQ bots.}
15
+ s.homepage = "https://github.com/sheyber/icqbot"
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
26
  end
@@ -6,5 +6,5 @@ require_relative './icqbot/user.rb'
6
6
  require_relative './icqbot/message.rb'
7
7
 
8
8
  module ICQ
9
- VERSION = '0.1.5'
9
+ VERSION = '0.1.6'
10
10
  end
@@ -25,6 +25,8 @@ module ICQ
25
25
  @pool_time = pool_time
26
26
  @last_event_id = 0
27
27
  @loop = true
28
+ @event_handlers = {}
29
+ @callback_event_handlers = {}
28
30
  yield self if block_given?
29
31
  end
30
32
 
@@ -43,11 +45,26 @@ module ICQ
43
45
  if events and events['events'] and events['events'] != []
44
46
  last_event = events['events'].last
45
47
  @last_event_id = last_event['eventId']
46
- yield ICQ::Event.new last_event
48
+ last_event = ICQ::Event.new last_event
49
+ if @event_handlers.has_key? last_event.text
50
+ @event_handlers[last_event.text].call last_event
51
+ elsif last_event.type == ICQ::TypeEvent::CALLBACK and @callback_event_handlers.has_key? last_event.data
52
+ @callback_event_handlers[last_event.text].call last_event
53
+ else
54
+ yield last_event
55
+ end
47
56
  end
48
57
  end
49
58
  end
50
59
 
60
+ def add_event_handler name, handler
61
+ @event_handlers[name] = handler
62
+ end
63
+
64
+ def add_callback_event_handler name, handler
65
+ @callback_event_handlers[name] = handler
66
+ end
67
+
51
68
  private
52
69
  def base_req chat_id
53
70
  {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icqbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
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-23 00:00:00.000000000 Z
11
+ date: 2020-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: requests
@@ -41,6 +41,7 @@ files:
41
41
  - Gemfile
42
42
  - README.md
43
43
  - bin/5time_echo_and_end.rb
44
+ - bin/bot_with_events_handlers.rb
44
45
  - bin/echo_bot.rb
45
46
  - bin/send_text_with_button.rb
46
47
  - doc/bot.md
@@ -48,7 +49,6 @@ files:
48
49
  - doc/event.md
49
50
  - doc/message.md
50
51
  - doc/overview.md
51
- - doc/todolist.md
52
52
  - icqbot.gemspec
53
53
  - lib/icqbot.rb
54
54
  - lib/icqbot/bot.rb
@@ -1,6 +0,0 @@
1
-
2
- **TODO**
3
- * works with files
4
- * fix callback events
5
- * fix messages
6
- * write doc