Browse Source

Фиксация версии.

Нужно зафиксить изменения перед деплоем бота в прод.
master
Дмитрий 3 years ago
parent
commit
2a0df69d4f
  1. 75
      main.py
  2. 19
      services.py
  3. 4
      static/short_question_error.txt
  4. 4
      static/welcome_msg_short.txt

75
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:

19
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

4
static/short_question_error.txt

@ -0,0 +1,4 @@
Пишешь пусто - делаешь грустно (мне)
После /q надо написать вопрос, вот так:
`/q как доехать до Баррикадной?`

4
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}
Loading…
Cancel
Save