Бот Discord реагирует только на одну команду - PullRequest
0 голосов
/ 14 июля 2020

Я настраиваю простого Python бота Discord, но он, кажется, реагирует только на одно событие / команду. Он реагирует только на то, когда кто-то говорит «высший соус», он отправляет «сырой соус», но не отвечает ни на что другое, например на «.ping» или «.clear».

Есть что-нибудь, что я что-то не так?

Мой код:

import discord
from discord.ext import commands
import time

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    print(f'{client.user} has successfully connected to Discord!')

@client.event
async def on_message(message):
    if 'supreme sauce' in message.content:
        await message.channel.send('raw sauce')

@client.command()
async def ping(ctx):
    await ctx.send(f'Pong! {round(client.latency * 1000)}ms')

@client.command
async def clear(ctx, amount=10):
    await ctx.channel.purge(limit=amount)
    
client.run('My Token')

1 Ответ

1 голос
/ 14 июля 2020

on_message имеет приоритет над командами. Если вы хотите, чтобы произошло и то, и другое, сделайте следующее:

async def on_message(message): 
    if message.author == bot.user: return #Makes sure it can't loop itself when making messages
    await bot.process_commands(message)
    #rest of your code here

Это позволяет при отправке сообщения проверять, является ли это сообщение командой и go оттуда, а затем выполнит код on_message как обычно

...