discord py — удаление сообщения с одинаковым содержимым на нескольких серверах (необработанное удаление)

#python #python-3.x #discord.py #discord.py-rewrite

#python #python-3.x #discord.py #discord.py-перезапись

Вопрос:

Я пишу бота для глобального чата discord (например, так)

Глобальный чат — это бот, который делится сообщениями канала с определенного канала со всеми другими серверами, который использует бота и настраивает канал. Если пользователь напишет сообщение в этом канале, бот разместит его на всех других серверах с точно таким же расположением сообщений.

Глобальный чат, подобный этому, нуждается в хороших функциях модерации, таких как быстрое и простое удаление сообщений.

Теперь вот моя проблема: я хочу использовать on_raw_message_delete событие, которое происходит, если модератор из global-bot удаляет сообщение канала без команды, но с помощью самой функции Discord.

Как я могу удалить одно и то же сообщение на всех других серверах, когда пользователь удаляет сообщение с помощью самого discord?Я думаю, что я должен сохранять сообщения в базе данных и должен использовать проверку сходства, но у меня нет плана, как я могу это сделать. Мне действительно нужна помощь, я стараюсь изо всех сил в течение нескольких дней, но понятия не имею. Для этого мне нужны функции кода.

Ответ №1:

Я бы создал словарь, и ключами были бы пользовательские сообщения, а значениями — списки сообщений, которые ваш бот будет отправлять на другие серверы.

Таким образом, когда пользователь удаляет сообщение, вы можете перехватить событие в своем on_raw_message_delete методе, получить идентификатор удаленного сообщения и получить значения для этого сообщения в вашем dict.

Готовый код, скорее всего, будет выглядеть примерно так:

 messages = {}

async def on_message(self, message):
    self.messages[message.id] = [await chan.send(message.content) for chan in linked_channels]

async def on_raw_message_delete(self, payload):
    for msg in self.messages[payload.message_id]:
        await msg.delete()