blob: 1a71f1d2fc2a065ebb12d3ae9fd2ef748f0c6203 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
from typing import Union
from iamai import Plugin, Event, Depends
from iamai.log import logger
from .config import Config
from iamai.event import MessageEvent
from .database import Database
from .permission import Permission
from .workroutes import WorkRoutes
from .inspector import Inspector
class Bottles(Plugin, config=Config):
database: Database = Depends()
permission: Permission = Depends()
workroutes: WorkRoutes = Depends()
inspector: Inspector = Depends()
def __init__(self):
self.text = None
self.prefix = None
self.suffix = None
async def handle(self) -> None:
self.namespace = next(
(
key
for key, value in self.config.command_list.items()
if value == self.prefix
),
"",
)
if method := getattr(self.inspector, self.namespace, None):
result = await method(self.suffix, self.config)
if result:
await self.event.reply(result)
async def rule(self) -> bool:
if not isinstance(self.event, MessageEvent):
return False
if not self.permission.is_admin():
return False
self.text = self.event.get_plain_text()
for prefix in list(self.config.command_list.values()):
if self.text.startswith(prefix):
self.prefix = prefix
self.suffix = self.text[len(self.prefix) + 1 :]
return True
return False
|