vk_cozy 0.3.6 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ff934ed3de889cad7691093027e24648bd20cbc8bfcc7302c0fbcc53a34e79e
4
- data.tar.gz: e824e451aa36108fb9b5fee80c7e0c289aefc65cb9c0afb65e23e9d371c79421
3
+ metadata.gz: 88f8d21019678635297581f40f48e83e71cc79bfe2db701cd3c6b6815df8c5d0
4
+ data.tar.gz: 2a3e5cfce38ec22b4d20f36b3f50e6c2d5b508a09e854186c5aeb90fa858ff80
5
5
  SHA512:
6
- metadata.gz: f7b7b564065b60f8e789e56c82ed9da73600650a05c7a71bc9057d966e04262ecf683d24c2304e7570c284e94209b37fb5166c5ea94ac3e13e094e344c759510
7
- data.tar.gz: b076661eaab47055f6e7ee4f705892dbbc1c1f02d9069858b06c42361cae86a38139639a61072a33736eab2f7e4a524b4b2cfa3e5d9b511d37b8e3d94279a7cc
6
+ metadata.gz: b02bf27e35dd324d7497ff0d2bd7f4a952b313cb94fc897c3e190b510881d870efe4e17c1c912dcdf5a596aaf2842608d94d44f6b6432c8cbae7778cb38340e9
7
+ data.tar.gz: f2b9dbac5adb7488dcf8db32189ab9d80c514ed8acefc20782ba9ded4275ea6214c8023747e0d5dee8bef70f9bdb804911a31c58f856d8ffce100a4d2160401e
@@ -19,6 +19,14 @@ module VkCozy
19
19
 
20
20
  end
21
21
 
22
+ def answer(text)
23
+ return @api.messages_send(
24
+ peer_id: @obj.peer_id,
25
+ message: text,
26
+ random_id: 0
27
+ )
28
+ end
29
+
22
30
  def [] key
23
31
  instance_variable_get("@#{key}")
24
32
  end
@@ -1,39 +1,76 @@
1
1
  module VkCozy
2
+
3
+ class Bothandler
4
+ attr_reader :stop
5
+
6
+ def initialize(filter, func, stop: true)
7
+ @stop = stop
8
+ @filter = filter
9
+ @func = func
10
+ end
11
+
12
+ def check(event)
13
+ check_bot = @filter.check_bot(event)
14
+ if check_bot
15
+ if check_bot.is_a?(Symbol)
16
+ return true
17
+ elsif check_bot.is_a?(Hash)
18
+ @func.call(event, check_bot)
19
+ else
20
+ @func.call(event)
21
+ end
22
+ if @stop
23
+ return true
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+
2
30
  class BotLabeler
3
31
  attr_reader :api
4
32
 
5
33
  def initialize(api)
6
34
  @api = api
7
- @rules = []
35
+ @handlers = {'*' => []} # * - обрабатывает события в не зависимости от их типа.
36
+ end
37
+
38
+ def get_handlers(type)
39
+ if @handlers[type].nil?
40
+ return []
41
+ else
42
+ return @handlers[type]
43
+ end
8
44
  end
9
45
 
10
46
  def filter(event)
11
- for i in @rules
12
- f = i[:filter]
13
- check = f.check_bot(event)
14
- if check
15
- if check.is_a?(Symbol)
16
- check = [Symbol]
17
- elsif check.is_a?(Array)
18
- i[:func].call(event, *check)
19
- elsif check.is_a?(Hash)
20
- i[:func].call(event, **check)
21
- else
22
- i[:func].call(event)
23
- end
47
+ for handler in get_handlers(event.type) + @handlers['*']
48
+ if handler.check(event)
24
49
  return true
25
50
  end
26
51
  end
27
52
  end
28
53
 
29
- def message_handler(filter, func)
54
+ def add_handler(filter, func, type: '*')
30
55
  if func.is_a?(Symbol)
31
56
  func = method(func)
32
57
  end
33
- @rules << {
34
- :func => func,
35
- :filter => filter
36
- }
58
+ if @handlers[type].nil?
59
+ @handlers[type] = []
60
+ end
61
+ @handlers[type] << Bothandler.new(filter, func)
62
+ end
63
+
64
+ def event_handler(filter, func)
65
+ add_handler(filter, func, type: 'message_event')
66
+ end
67
+
68
+ def message_handler(filter, func)
69
+ add_handler(filter, func, type: 'message_new')
70
+ end
71
+
72
+ def handler(filter, func)
73
+ add_handler(filter, func)
37
74
  end
38
75
  end
39
76
  end
@@ -1,4 +1,4 @@
1
- module VkCozy
1
+ module Filter
2
2
  class BaseFilter
3
3
  def check_user(event) # Method check for user-bot
4
4
  raise 'Method check_user not implemented'
@@ -9,7 +9,17 @@ module VkCozy
9
9
  end
10
10
  end
11
11
 
12
- class YaScan < VkCozy::BaseFilter
12
+ class MockedFilter < BaseFilter
13
+ def check_bot(event)
14
+ return true
15
+ end
16
+
17
+ def user_bot(event)
18
+ return true
19
+ end
20
+ end
21
+
22
+ class YaScan < BaseFilter
13
23
  def initialize(pattern, flags: Regexp::IGNORECASE)
14
24
  @flags = flags
15
25
  @pattern = valid_pattern(pattern) # Pattern example: my name is <name>
@@ -32,25 +42,20 @@ module VkCozy
32
42
  end
33
43
 
34
44
  def check_bot(event)
35
- if event.type == VkCozy::BotEventType::MESSAGE_NEW
36
- check_text(event.message.text)
37
- end
45
+ check_text(event.message.text)
38
46
  end
39
47
 
40
48
  def check_user(event)
41
- if event.type == VkCozy::UserEventType::MESSAGE_NEW
42
- if event.from_me
43
- return false
44
- end
45
- check_text(event.text)
49
+ if event.from_me
50
+ return false
46
51
  end
52
+ check_text(event.text)
47
53
  end
48
54
  end
49
55
 
50
56
  class Text < BaseFilter
51
- def initialize(regex, **kwargs)
57
+ def initialize(regex)
52
58
  @regex = regex
53
- @raw = kwargs
54
59
  end
55
60
 
56
61
  def check_user(event)
@@ -25,7 +25,7 @@ module VkCozy
25
25
 
26
26
  define :VIDEO_NEW, 'video_new'
27
27
 
28
- define :VIDEO_COMMENT_NEW, 'video_comment_new'
28
+ define :VIDEO_COMMENT_NEW, 'video_comment_new'
29
29
  define :VIDEO_COMMENT_EDIT, 'video_comment_edit'
30
30
  define :VIDEO_COMMENT_RESTORE, 'video_comment_restore'
31
31
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vk_cozy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danil Konenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-12 00:00:00.000000000 Z
11
+ date: 2022-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inum
@@ -52,7 +52,8 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- description: framework for Vk.api
55
+ description: vk_cozy является фреймворком для vk api, имеет удобные хэндлеры и фильтры,
56
+ создан чтобы упростить разработку ботов для вк
56
57
  email: googloldanil@gmail.com
57
58
  executables: []
58
59
  extensions: []
@@ -88,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
89
  requirements:
89
90
  - - ">="
90
91
  - !ruby/object:Gem::Version
91
- version: '0'
92
+ version: 2.7.0
92
93
  required_rubygems_version: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - ">="
@@ -98,5 +99,5 @@ requirements: []
98
99
  rubygems_version: 3.3.7
99
100
  signing_key:
100
101
  specification_version: 4
101
- summary: Vk.com API Client
102
+ summary: vk_cozy framework for vk-api
102
103
  test_files: []