Как реализовать удаление сообщений в телеграм чате?
Час добрый. Если будет недостаточно информации, то скажите об этом подправлю пост.
Нужно реализовать удаление сообщений в телеграм чате всех пользователей, чей id не записан в базу данных. Сама база формируется следующим образом: люди пишут этому же боту в личные сообщения и он сохраняет их id в user_id_list. На данный момент нашел пример проверки всех новых сообщений в чате, но не знаю как устроить проверку этого сообщения на id юзера, написавшего данное сообщение.
Ниже предоставлен код поиска последних сообщений в чате В идеале на месте &&& стоит внести проверку сообщений на пользователя и удалять их если пользователя нет в базе, но как это реализовать - не знаю
Самого бота буду писать на aiogram, думаю асинхронность поможет в обработке двух функций (сбор базы и удаление сообщений). Если нет, то думаю рассмотреть мультипроцессинг
Чтобы подвести итог, то конечный вариант бота должен быть таков: Если написавший в чат не находится в базе данных по его id, то его сообщение будет удалено. Плюс желательно для чистоты самого чата удалять сообщение об удалении сообщения. Однако если же данный пользователь нашелся в базе, то его сообщение пропустят и не удалят.
Как можно реализовать подобного бота? Думал сделать двух разных, один будет собирать базу id написавших ему и сохранят ее скажем в google sheets, а второй будет проверять всех написавших в чат и удалять сообщения тех кого там нет, или же проверять всех, кто есть в чате и выдавать бан чата на 10 минут всем, кто не найден в базе данных. При этом проверку пользователей желательно проводить либо постоянно, либо раз в 5 секунд, чтобы не пропустить сообщения
from telethon import TelegramClient, events
from pars_conf import account, list_all, list_id_users # import data from config
api_id = account[0] # give an api
api_hash = account[1] #give a hash
client = TelegramClient('my_account', api_id, api_hash) # find id user
@client.on(events.NewMessage) # wait for new message
async def my_event_handler(event): # checking event
if event.chat.username in list_all: #check from what channel messege send
chat = await event.get_input_chat() # take chat info
msg = await client.get_messages(chat.channel_id, limit=1) # take last message
&&&&&&&&&&&&&&&&&&&
print("busted")
client.start() # start client
client.run_until_disconnected()