Discord.py: Черный список Cog.ошибка пометки прослушивателя: Ошибка типа: объект ‘str’ не вызывается

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

Вопрос:

У меня есть команда, которая заносит слова в черный список, но, похоже, она не работает. Ошибка флагов line 128, in on_message, msg = message.content() TypeError: 'str' object not callable

 @commands.Cog.listener()
async def on_message(self, message):
    """Deletes a messaged that contains a blacklisted word"""

    msg = message.content()

    for word in msg:

        if msg.find("blacklist") != -1:

            await message.delete()
 

Ответ №1:

Это потому, что вы пытаетесь использовать атрибут .content как функцию. Вы не можете вызвать атрибут.

Правильный способ получения содержимого сообщения-просто удалить эти скобки.

 @commands.Cog.listener()
async def on_message(self, message):
    """Deletes a messaged that contains a blacklisted word"""

    msg = message.content
    
    ...
 

Комментарии:

1. Это работает, но помечает ошибку discord.errors.NotFound: 404 Not Found (error code: 10008): Unknown Message

2. Строка, которая await message.delete() включена в моем примере

3. Это означает, что сообщение уже было удалено. Поэтому я бы проверил, удаляют ли какие-либо другие боты сообщения до вашего.

4. Других ботов нет.

5. О. Вы не выйдете, как только найдете слово «в черном списке». Как только сообщение удалено, оно не может быть удалено снова. Так что вам нужно поставить return или break под await message.delete()