Guest User

Untitled

a guest
May 17th, 2024
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.56 KB | None | 0 0
  1. import configparser
  2. import json
  3. from typing import Union
  4.  
  5. import asyncio
  6.  
  7. from aiogram import (Router, Bot, Dispatcher,
  8.                      F, types)
  9. import logging
  10.  
  11. from database import Messagesx
  12.  
  13. router = Router(name=__name__)
  14.  
  15. logger = logging.getLogger(__name__)
  16.  
  17. logging.basicConfig(level=logging.INFO)
  18.  
  19. config = configparser.ConfigParser()
  20. config.read("config.ini")
  21.  
  22. TOKEN = config["main"]["bot_token"]
  23. USER_ID = config["main"]["user"]
  24.  
  25.  
  26. async def send_msg(message_old: str, message_new: Union[str, None], user_fullname: str, user_id: int, bot: Bot = None):
  27.     if message_new is None:
  28.         msg = (f' <b>Пользователь {user_fullname} ({user_id})</b>\n'
  29.                f' <b>Сообщение удалено:</b>\n'
  30.                f' Сообщение:\n<code>{message_old}</code>\n')
  31.     else:
  32.         msg = (f' <b>Пользователь {user_fullname} ({user_id})</b>\n'
  33.                f' <b>Сообщение изменено:</b>\n'
  34.                f' Старое сообщение:\n<code>{message_old}</code>\n'
  35.                f' Новое сообщение:\n<code>{message_new}</code>')
  36.     await bot.send_message(USER_ID, msg, parse_mode='html')
  37.  
  38.  
  39. @router.edited_business_message()
  40. async def edited_business_message(message: types.Message):
  41.     if message.from_user.id == message.chat.id:
  42.         user_msg = Messagesx.get(user_id=message.from_user.id)
  43.         data = {message.message_id: message.text}
  44.         if user_msg is None:
  45.             Messagesx.add(user_id=message.from_user.id, message_history=json.dumps(data))
  46.         else:
  47.             msg_history = json.loads(user_msg.message_history)
  48.             if str(message.message_id) in msg_history:
  49.                 await send_msg(message_old=msg_history[str(message.message_id)], message_new=message.text,
  50.                                user_fullname=message.from_user.full_name, user_id=message.chat.id, bot=message.bot)
  51.                 data = {**msg_history, **data}
  52.                 Messagesx.update(user_id=message.from_user.id, message_history=json.dumps(data))
  53.  
  54.  
  55. @router.deleted_business_messages()
  56. async def deleted_business_messages(message: types.Message):
  57.     user_msg = Messagesx.get(user_id=message.chat.id)
  58.     if user_msg is not None:
  59.         msg_history = json.loads(user_msg.message_history)
  60.         for msg_id in message.message_ids:
  61.             if str(msg_id) in msg_history:
  62.                 await send_msg(message_old=msg_history[str(msg_id)], message_new=None,
  63.                                user_fullname=message.chat.full_name, user_id=message.chat.id, bot=message.bot)
  64.                 msg_history.pop(str(msg_id))
  65.                 Messagesx.update(user_id=message.chat.id, message_history=json.dumps(msg_history))
  66.  
  67.  
  68. @router.business_message(F.text)
  69. async def business_message(message: types.Message):
  70.     if message.from_user.id == message.chat.id:
  71.         user_msg = Messagesx.get(user_id=message.from_user.id)
  72.         data = {message.message_id: message.text}
  73.         if user_msg is None:
  74.             Messagesx.add(user_id=message.from_user.id, message_history=json.dumps(data))
  75.         else:
  76.             msg_history = json.loads(user_msg.message_history)
  77.             data = {**msg_history, **data}
  78.             Messagesx.update(user_id=message.from_user.id, message_history=json.dumps(data))
  79.  
  80.  
  81. async def main() -> None:
  82.     Messagesx.create_db()
  83.  
  84.     bot = Bot(token=TOKEN)
  85.     dp = Dispatcher()
  86.  
  87.     dp.include_router(router)
  88.  
  89.     await bot.delete_webhook(drop_pending_updates=True)
  90.     await dp.start_polling(bot)
  91.  
  92.  
  93. asyncio.run(main())
Advertisement
Add Comment
Please, Sign In to add comment