#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()