Answer the question
In order to leave comments, you need to log in
Why doesn't event and command python discord bot combine?
I wrote a conversational bot in python for discord - @client.event, added chat cleaning - @client.command, the bot replies to messages, but the chat does not clear, when I commented out the code with conversations, the bot started to clear the chat on command, but after uncommenting the code the bot stopped clearing the chat again.
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
Answer the question
In order to leave comments, you need to log in
https://discordpy.readthedocs.io/en/latest/faq.htm...
Replacing the default `on_message` prevents any additional commands from being executed. To fix this, add the line `bot.process_commands(message)` at the end of your `on_message`, like so:
@bot.event
async def on_message(message):
# do some extra stuff here
await bot.process_commands(message)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question