add .token command

This commit is contained in:
Von Random 2023-11-06 23:21:00 +02:00
parent 29d8ff41c5
commit 75c8727097

View file

@ -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)