From 2a0df69d4fab03bc481dfabb37536ae6a869057f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Fri, 1 Apr 2022 12:34:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Нужно зафиксить изменения перед деплоем бота в прод. --- main.py | 75 ++++++++++----------------------- services.py | 19 +++++++++ static/short_question_error.txt | 4 ++ static/welcome_msg_short.txt | 4 ++ 4 files changed, 50 insertions(+), 52 deletions(-) create mode 100644 static/short_question_error.txt create mode 100644 static/welcome_msg_short.txt diff --git a/main.py b/main.py index 2688159..d54373b 100644 --- a/main.py +++ b/main.py @@ -3,11 +3,8 @@ import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.utils.exceptions import MessageToDeleteNotFound import asyncio -from datetime import timedelta, datetime -import secrets - -from sqlalchemy.exc import IntegrityError -from models import Allowed_user, Token, Messages_to_delete, Base +from datetime import timedelta +from models import Allowed_user, Messages_to_delete, Base from aiogram.utils.markdown import escape_md import settings import services @@ -46,24 +43,6 @@ async def get_channel_id(message: types.Message) -> None: ) -@dp.message_handler(commands=["mes"]) -@services.auth -async def send_to_chanel(message: types.Message) -> None: - - deletion_time = message.date + timedelta(minutes=settings.DELAY_TIME) - out_text = f"{message.text[5:]} \n\nБудет удалено в *{deletion_time}*" - result = await bot.send_message( - chat_id=settings.CHAT_ID, - text=out_text, - disable_notification=True, - parse_mode="Markdown", - ) - print(result.sender_chat.id) - await services._clean_up( - message_id=result.message_id, delay_min=settings.DELAY_TIME, bot=bot - ) - - @dp.message_handler(commands=["q"]) @services.auth async def send_question(message: types.Message) -> None: @@ -75,9 +54,7 @@ async def send_question(message: types.Message) -> None: """ if len(message.text) == len("/q"): await message.reply( - "Пишешь пусто - делаешь грустно (мне)" - "\nПосле /q надо написать вопрос, вот так:" - "\n\n`/q как доехать до Баррикадной?`", + services.get_static("static/short_question_error.txt"), reply=False, parse_mode="Markdown", ) @@ -102,7 +79,7 @@ async def send_question(message: types.Message) -> None: async def get_invite(message: types.Message) -> None: """Получить токен для нового пользователя.""" bot_info = await bot.get_me() - bot_link = "@" + str(bot_info.username) + bot_link = f"@{bot_info.username}" token = services.get_new_token() @@ -136,16 +113,17 @@ async def add_me(message: types.Message) -> None: chat_id=settings.CHAT_ID, expire_date=timedelta(minutes=5), member_limit=1 ) - with open("static/welcome_msg_short.txt", "r") as file: - msg = file.read() - await message.reply( - msg.format(invite=link["invite_link"]), reply=False, parse_mode="Markdown" - ) + msg = services.get_static("static/welcome_msg_short.txt") + await message.reply( + msg.format(invite=link["invite_link"]), reply=False, parse_mode="Markdown" + ) await asyncio.sleep(10) - with open("static/welcome_msg.txt", "r") as f: - msg = f.read() - await message.reply(msg, reply=False, parse_mode="Markdown") + + msg = services.get_static("static/welcome_msg.txt") + await message.reply( + msg, reply=False, parse_mode="Markdown", disable_web_page_preview=True + ) @dp.message_handler(commands=["stop"]) @@ -158,39 +136,32 @@ async def stop_and_panic(message: types.Message) -> None: - удаляет из белого списка. """ u_id = message["from"]["id"] - finded_user: Allowed_user = ( - services.session.query(Allowed_user) - .filter(Allowed_user.user_id == u_id) - .one_or_none() - ) + services.delete_user_from_allowed_list(u_id) await bot.kick_chat_member( - chat_id=settings.CHAT_ID, user_id=finded_user.user_id, revoke_messages=True + chat_id=settings.CHAT_ID, user_id=u_id, revoke_messages=True ) - services.session.delete(finded_user) - services.session.commit() - - # рассылка сообщения админам что юзер нажал паническую кнопку. Нужны ид чатов. - # for admin_id in ADMINS: - # await bot.send_meassage() @dp.message_handler(commands=["wlc"]) @services.only_admins async def wlc(message: types.Message) -> None: """Тестирование приветственного сообщения.""" - with open("static/welcome_msg.txt", "r") as f: - msg = f.read() - await message.reply( - msg, reply=False, parse_mode="Markdown", disable_web_page_preview=True - ) + await message.reply( + services.get_static("static/welcome_msg.txt"), + reply=False, + parse_mode="Markdown", + disable_web_page_preview=True, + ) # https://stackoverflow.com/questions/67637631/create-a-background-process-using-aiogram async def messages_cleanup() -> None: + # выполняется только при запуске бота! Может быть плохо msg_list = ( services.session.query(Messages_to_delete).order_by(Messages_to_delete.id).all() ) while True: + # вот тут бы проверить, что вообще есть сообещния for m in msg_list: if m.deletion_needed: try: diff --git a/services.py b/services.py index ab4c1bd..6079b1b 100644 --- a/services.py +++ b/services.py @@ -114,3 +114,22 @@ def add_new_user_to_allowed_list(user_id: int) -> None: except IntegrityError: print(f"Юзер {new_user.user_id} уже в базе") session.rollback() + + +def delete_user_from_allowed_list(user_id: str) -> None: + """Удаляет пользователя из белого списка.""" + user: Allowed_user = ( + session.query(Allowed_user) + .filter(Allowed_user.user_id == user_id) + .one_or_none() + ) + if user: + session.delete(user) + session.commit() + + +def get_static(name: str) -> str: + """Возвращает содержимое из файла переданного в name.""" + with open(name, "r") as f: + msg = f.read() + return msg diff --git a/static/short_question_error.txt b/static/short_question_error.txt new file mode 100644 index 0000000..2e25b58 --- /dev/null +++ b/static/short_question_error.txt @@ -0,0 +1,4 @@ +Пишешь пусто - делаешь грустно (мне) +После /q надо написать вопрос, вот так: + +`/q как доехать до Баррикадной?` diff --git a/static/welcome_msg_short.txt b/static/welcome_msg_short.txt new file mode 100644 index 0000000..3db8025 --- /dev/null +++ b/static/welcome_msg_short.txt @@ -0,0 +1,4 @@ +Welcome to the internet +Have a look around +Anything that brain of yours can think of can be found +Твоя ссылка для вступления: {invite}