Migrated to mab library, added stubs for commands
This commit is contained in:
@@ -4,19 +4,19 @@ import html
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from mab import MatrixBot
|
||||
from nio import MatrixRoom, RoomMessageText
|
||||
|
||||
import util
|
||||
from bot import MatrixBot
|
||||
|
||||
#
|
||||
# PRIVATE
|
||||
#
|
||||
_bot: MatrixBot = None # ignore
|
||||
_bot: MatrixBot = None # type: ignore
|
||||
|
||||
def _generate_help_message() -> str:
|
||||
"""Generates help message in HTML markup"""
|
||||
result = "<b><i>Как использовать</i></b><ol>"
|
||||
result = "<b><i>Как использовать</i></b><br><ol>"
|
||||
result += "<li>Используя <code>!auth</code>, создайте токен</li>"
|
||||
result += "<li>Добавьте бота в комнату для уведомлений</li>"
|
||||
result += "<li>Выполните <code>!info</code> в комнате, чтобы узнать код канала уведомений</li>"
|
||||
@@ -88,29 +88,81 @@ async def _on_cmd_tokens(room: MatrixRoom, args: list[str]) -> None:
|
||||
},
|
||||
}
|
||||
|
||||
response = "<b><i>Список токенов</i></b><ul>"
|
||||
response = "<b><i>Список токенов</i></b>"
|
||||
for token in TEST_LIST:
|
||||
data = TEST_LIST[token]
|
||||
response += "<li>"
|
||||
response += f"<code>{html.escape(token)}</code><ul>"
|
||||
response += f"<br><b><code>{html.escape(token)}</code></b><br><ul>"
|
||||
|
||||
if data["service_name"] is not None:
|
||||
response += f"<li><b>Имя службы:</b> <i>{data["service_name"]}</i></li>"
|
||||
response += f"<li><b>Имя службы:</b> <code>{data["service_name"]}</code></li>"
|
||||
else:
|
||||
response += f"<li><b>Имя службы:</b> <i>указывается в запросе</i></li>"
|
||||
response += f"<li><b>Создан:</b> <i>{util.date_to_text(data["created"])}</i></li>"
|
||||
response += f"<li><b>Последнее использование:</b> <i>{util.date_to_text(data["last_use"])}</i></li>"
|
||||
response += f"<li><b>Всего использований:</b> <i>{util.date_to_text(data["total_uses"])}</i></li>"
|
||||
response += f"<li><b>Всего использований:</b> <i>{data["total_uses"]}</i></li>"
|
||||
|
||||
response += "</ul>"
|
||||
response += "</li>"
|
||||
response += "</ul>"
|
||||
await _bot.send_text_to_room(room.room_id, response, is_html=True)
|
||||
|
||||
async def _on_cmd_auth(room: MatrixRoom, args: list[str]) -> None:
|
||||
"""!auth"""
|
||||
new_token = "inr3i4evfds"
|
||||
new_token_name = " ".join(args) if args else None
|
||||
if type(new_token_name) is str and not new_token_name.strip():
|
||||
new_token_name = None
|
||||
|
||||
response = "<b>Создан новый токен</b>"
|
||||
response += f"<br><b>Код:</b> <code>{new_token}</code>"
|
||||
response += f"<br><b>Имя сервиса:</b> "
|
||||
if new_token_name:
|
||||
response += f"<code>{html.escape(new_token_name)}</code>"
|
||||
else:
|
||||
response += "указывается в запросе"
|
||||
await _bot.send_text_to_room(room.room_id, response, is_html=True)
|
||||
|
||||
async def _on_cmd_deauth(room: MatrixRoom, args: list[str]) -> None:
|
||||
"""!deauth"""
|
||||
if len(args) != 1:
|
||||
await _bot.send_text_to_room(room.room_id, "<b>Укажите токен, который надо удалить (должен быть ровно один аргумент)</b>", is_html=True)
|
||||
return
|
||||
token = args[0]
|
||||
# TODO
|
||||
response = f"<b>Удалён токен <code>{token}</code></b>"
|
||||
await _bot.send_text_to_room(room.room_id, response, is_html=True)
|
||||
|
||||
async def _on_cmd_name(room: MatrixRoom, args: list[str]) -> None:
|
||||
"""!name"""
|
||||
if len(args) < 1:
|
||||
error = "<b>Требуется указать как минимум токен. Если хотите убрать имя, то имя указывать не надо. Если имя нужно назначить или изменить, то после токена укажите новое имя.</b>"
|
||||
await _bot.send_text_to_room(room.room_id, error, is_html=True)
|
||||
return
|
||||
token = args[0]
|
||||
|
||||
new_name = " ".join(args[1:])
|
||||
if not new_name.strip():
|
||||
new_name = None
|
||||
|
||||
# TODO
|
||||
|
||||
if new_name:
|
||||
response = f"<b>Новое имя для токена <code>{token}</code>: <code>{new_name}</code></b>"
|
||||
else:
|
||||
response = f"<b>Удалено имя для токена <code>{token}</code></b>"
|
||||
|
||||
await _bot.send_text_to_room(room.room_id, response, is_html=True)
|
||||
|
||||
async def _on_cmd_leave(room: MatrixRoom, args: list[str]) -> None:
|
||||
"""!leave"""
|
||||
await _bot.send_text_to_room(room.room_id, "<b>Команда не реализована</b>", is_html=True)
|
||||
|
||||
_COMMANDS = {
|
||||
("help", "?"): (_on_cmd_help, "Получить справку"),
|
||||
("info", "room"): (_on_cmd_info, "Получить сведения о комнате"),
|
||||
("tokens",): (_on_cmd_tokens, "Получить список токенов"),
|
||||
("help", "h", "?"): (_on_cmd_help, "Получить справку"),
|
||||
("info", "room", "i", "r"): (_on_cmd_info, "Получить сведения о комнате"),
|
||||
("tokens", "t"): (_on_cmd_tokens, "Получить список токенов"),
|
||||
("auth", "create", "a", "c"): (_on_cmd_auth, "Создать новый токен"),
|
||||
("deauth", "delete", "d"): (_on_cmd_deauth, "Удалить существующий токен"),
|
||||
("name", "n"): (_on_cmd_name, "Задать (или удалить) имя для токена"),
|
||||
("leave", "l"): (_on_cmd_leave, "Покинуть комнату, в которой получена эта команда"),
|
||||
}
|
||||
|
||||
#
|
||||
@@ -120,4 +172,4 @@ def setup(bot: MatrixBot) -> None:
|
||||
"""Setup the callbacks"""
|
||||
global _bot
|
||||
_bot = bot
|
||||
_bot.add_event_callback(_on_text, RoomMessageText)
|
||||
_bot.add_event_callback(_on_text, RoomMessageText) # type: ignore
|
||||
|
||||
Reference in New Issue
Block a user