diff --git a/pgbotlib/commands.py b/pgbotlib/commands.py index 8c9d514..dd792fe 100644 --- a/pgbotlib/commands.py +++ b/pgbotlib/commands.py @@ -18,6 +18,8 @@ class Commander: T_START_E = frozenset(['cmd_start_enabled']) T_STOP = frozenset(['cmd_stop']) T_STOP_D = frozenset(['cmd_stop_disabled']) + NOPE = "а ты что ещё за хуй с горы?" + YEP = "да, господин!" DOC = """ Команды: __.start__ @@ -26,6 +28,8 @@ class Commander: остановить бота __.list__ перечислить доступные токены + __.regex token__ + перечислить регулярные выражения, относящиеся к токену __.chat__ получить id текущего чата __.users__ @@ -55,7 +59,7 @@ class Commander: def __add_response(self, caller: int, command: str) -> bool: if caller not in self.admins: - return 'а ты что ещё за хуй с горы?' + return self.NOPE input_tokens, phrase = command.strip().split(' ', 1) input_tokenset = frozenset(input_tokens.split(',')) for token in input_tokenset: @@ -64,17 +68,17 @@ class Commander: query = 'INSERT INTO responses (tokens, response) values (%s,%s)' values = (','.join(sorted(input_tokenset)), phrase.strip()) self.db_conn.update(query, values) - return 'да, господин!' + return self.YEP def __add_user(self, caller: int, userspec: str) -> bool: if caller not in self.admins: - return 'а ты что ещё за хуй с горы?' + return self.NOPE user_id, names = userspec.strip().split(' ', 1) for name in names.strip().split(','): query = 'INSERT INTO names (tg_id, name) values(%s,%s)' values = (user_id, name) self.db_conn.update(query, values) - return 'да, господин!' + return self.YEP def __start_response(self) -> str: @@ -92,6 +96,13 @@ class Commander: for user in users] return '\n'.join(userlist) + def __list_regex(self, token: str) -> str: + for t, r in self.responder.tokens: + if token == t: + regexlist = [i.pattern for i in r] + return '\n'.join(regexlist) + return 'not found!' + async def action(self, event: telethon.events.common.EventBuilder) -> None: chat_id = telethon.utils.get_peer_id(event.message.peer_id) @@ -114,6 +125,8 @@ class Commander: response = str(chat_id) elif command == '.list': response = ', '.join(self.available_tokens) + elif command.startswith('.regex '): + response = self.__list_regex(command[7:].strip()) elif command == '.users': users = await self.client.get_participants( entity=event.message.peer_id)