Discord.py | Проблема с указанием на сообщением

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2023

Я сделал что бы сообщение написанное пользователем удалялось, а в другой канал писал бот, а уже под этим сообщение создавалась реакция, не знаю как указать путь именно к тому сообщению, что бы боту было понятно что делать. А так же не хотят работать команды. Вот код:

# This is a Python template for creating a Discord bot.

# Import the necessary packages and libraries
import discord
from discord.ext import commands

intents = discord.Intents.all() # Подключаем "Разрешения"
intents.message_content = True
# Задаём префикс и ивенты
client = commands.Bot(command_prefix='>', intents=intents) 

channel = client.get_channel(1054745120014090311)
member_bot = client.get_user(1069992808091500624)

@client.command()
async def ping(ctx):
    await ctx.send('pong')

@client.event
async def on_ready():
    print('Logged in as {0} ({0.id})'.format(client.user))
    print('------')

@client.event 
async def on_message(message): 

    # Запрещённые слова: 
    banned_words = ["тест", "тест1"]

    if 1069992808091500624 == message.author.id:
        pass
    else:
    # Проверка на запрещённые слова: 
        for word in banned_words:
            if message.content.count(word) > 0:  
                # Удаляем найденное запрещённое слово:      
                await message.delete()  
                await client.get_channel(1054745120014090311).send("{}, ```Обнаружена подозрительная активность\n\nСообщение: {}\nОтправитель: {}```".format('<@&1070644728829317190>', word, message.author)) 
                break

client.run('TOKEN')

Ответы

▲ 0

Во-первых,чтобы добавить реакцию на сообщение которое мы отправляем, мы должны подставить ему любую переменную, я взял message2 и потом добавляем саму реакцию, например:

            channel = client.get_channel(id)
            message2 = await channel.send(f"```Обнаружена подозрительная активность.\n\nСообщение: {word} \nОтправитель: {message.author}```")
            await message2.add_reaction('🎈')

Во-вторых, бот не отвечает на команды т.к. он не может продолжить работать с Вашим текстом т.к. он остается лишь в on_message. Добавляем в конце всех проделанных действий с пользователем:

    await client.process_commands(message)

Полный код:

@client.event 
async def on_message(message): 
    if message.author.bot:
        return

    banned_words = ["тест", "тест1"]

    for word in banned_words:
        if message.content.count(word) > 0:    
            await message.delete()  
            channel = client.get_channel(id)
            message2 = await channel.send(f"```Обнаружена подозрительная активность.\n\nСообщение: {word} \nОтправитель: {message.author}```")
            await message2.add_reaction('🎈')
            return
    
    await client.process_commands(message)