diff --git a/main.py b/main.py index c5ae1a3..3612227 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import logging from aiogram import Bot, Dispatcher, executor, types import asyncio from datetime import timedelta -from models import Messages_to_delete, Base +from models import Base from aiogram.utils.markdown import escape_md import settings import services @@ -52,7 +52,11 @@ async def send_question(message: types.Message) -> None: DELAY_TIME_Q минут. """ - if len(message.text) == len("/q"): + question = services.get_text_from_command(message) + + # если прислали только команду, без текста, показываем как надо + # пользоваться командой + if len(question) == 0: await message.reply( services.get_static("static/short_question_error.txt"), reply=False, @@ -61,7 +65,10 @@ async def send_question(message: types.Message) -> None: return deletion_time = message.date + timedelta(minutes=settings.DELAY_TIME_Q) - out_text = f"*Внимание, вопрос!*\n\n{message.text[3:]}\n\nБудет удалено в *{deletion_time}*" + out_text = "*Внимание, вопрос!*\n\n" + out_text += f"{message.text[3:]}\n\n" + out_text += f"Будет удалено в *{deletion_time}*" + result = await bot.send_message( chat_id=settings.CHAT_ID, text=out_text, @@ -83,7 +90,10 @@ async def send_post(message: types.Message) -> None: DELAY_TIME_POST минут. """ deletion_time = message.date + timedelta(minutes=settings.DELAY_TIME_POST) - out_text = f"{message.text[3:]}\n\nБудет удалено в *{deletion_time}*" + post = services.get_text_from_command(message) + + out_text = f"{post}\n\n" + out_text += f"Будет удалено в *{deletion_time}*" result = await bot.send_message( chat_id=settings.CHAT_ID, @@ -106,7 +116,10 @@ async def get_invite(message: types.Message) -> None: token = services.get_new_token() - msg = f"Новый токен: *{token}*\nБудет действителен 5 минут\n\nЧтобы вступить в чат напиши боту {escape_md(bot_link)} \n`/add_me {token}`" + msg = f"Новый токен: *{token}*\n" + msg += "Будет действителен 5 минут\n\n" + msg += f"Чтобы вступить в чат напиши боту {escape_md(bot_link)} \n" + msg += f"`/add_me {token}`" await message.reply( msg, @@ -124,7 +137,7 @@ async def add_me(message: types.Message) -> None: в группу. """ - user_token = message.text[8:].strip() + user_token = services.get_text_from_command(message) if not services.check_token(user_token): return diff --git a/services.py b/services.py index d559171..8a84e58 100644 --- a/services.py +++ b/services.py @@ -12,7 +12,7 @@ from secrets import token_urlsafe from datetime import datetime, timedelta from aiogram.utils.exceptions import MessageToDeleteNotFound -from aiogram import Bot +from aiogram import Bot, types engine = create_engine("sqlite:///" + str(settings.DB_PATH)) Session = sessionmaker(bind=engine) @@ -155,3 +155,9 @@ async def delete_old_messages(bot: Bot) -> None: print("Сообщение не найдено!") session.delete(m) session.commit() + + +def get_text_from_command(message: types.Message) -> str: + """Вернет текст из команды для бота (но не саму команду). Парсит message["entities"].""" + command_length = int(message["entities"][0]["length"]) + return message.text[command_length:].strip()