@k3rd0r

Почему не совмещается event и command python discord bot?

Написал разговорного бота на питоне для дискорда - @client.event, добавил очистку чата - @client.command, бот отвечает на сообщения, но чат не очищает, когда закомментировал код с разговорами, то бот начал по команде очищать чат, но после разкомментирования кода бот опять перестал очищать чат.

import discord
from config import settings
from discord.ext import commands

client = discord.Client
client = commands.Bot(command_prefix=settings['prefix'],)  # prefix = "." пример: .help

# WORDS
hello_words = ['hello', 'hi', 'privet', 'qq', 'ky', 'ку', 'q', 'helo',
               'привет', 'дороу', 'дорова', 'хай', 'хелло', 'хелоу', 'хеллоу', 'здарова', 'й', 'йй']
answer_words = ['инфо сервера', 'инфо о сервере', 'информация о сервере', 'информация сервера',
                'команды', 'все команды', 'команды севера', 'узнать инфо о сервере', 'узнать инфо сервера',
                'узнать информацию о сервере', 'узнать информацию сервера', 'помощь', 'что здесь делать', 'помоги',
                'что сдесь делать', 'что делать']
goodbye_word = ['бб', 'bb', 'goodbye', 'пока', 'poka', 'прощай', 'до завтра', 'bb all', 'бб олл', 'бб алл',
                'пока всем', 'бб всем']

# clear message


@client.command(pass_context=True)
async def clear(ctx, amount=100):
    await ctx.channel.purge(limit=amount)


@client.event
async def on_ready():
    print('Бот {0.user} подключён'.format(client))
# когда бот включается нам пишет сообщение "Бот "Respect" подключен"


@client.event
async def on_message(message):  # message это переменная которая означает сообщение
    author = message.author
    msg = message.content.lower()  # весь контент который будет записан-будет нижним регистром

    if author == client.user:  # не реагируем если отправитель-бот
        return

    if msg in hello_words:  # при вводе слов из переменной hello_words он будет с нами здороваться
        await message.channel.send(f'Привет, {author.mention}, чем могу помочь?')

    if msg in answer_words:  # при вводе слов из переменной answer_words он будет говорить нам ввести .help
        await message.channel.send('Для более подробной информации о сервере напишите в чат .help')

    if msg in goodbye_word:  # при вводе слов из переменной goodbye_words он будет прощаться
        await message.channel.send(f'Что? { author.mention}, ты уже уходишь? Ладно, пока-пока!')
client.run(settings['token'])  # connect
  • Вопрос задан
  • 2310 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
https://discordpy.readthedocs.io/en/latest/faq.htm...
Замена стандартного `on_message` предотвращает выполнение любых дополнительных команд. Для исправления этого добавьте добавьте строку `bot.process_commands(message)` в конце вашего `on_message`, например:

@bot.event
async def on_message(message):
    # do some extra stuff here

    await bot.process_commands(message)


Решение было:
Игнорирование команды discord.py?
Поддерживает ли discord.py одновременно реакцию и на сообщения, и на команды?
Не реагирует на комманди после того как написал on_message как исправить?
Discord.py не работают команды?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы