Python中的Discord bot-没有命令可用

Python中的Discord bot-没有命令可用,python,discord,command,bots,Python,Discord,Command,Bots,我想创建一个机器人,它将用参数响应命令。我已经让它响应消息中的字符串,但当我试图让命令工作时,机器人似乎根本没有反应。我已经研究了文档,花了很多精力试图在互联网上找到答案,但没有任何帮助。我的代码可能与internet上其他人的代码完全相同,但机器人在仍然响应消息时从不响应。我想知道关于命令应该如何工作,我是否缺少一些真正基本的东西 我已经导入了正确的库,我使用了与许多人在互联网上共享的语法完全相同的语法,但是这些命令什么都不做。我使用replit.com,它是一个浏览器IDE 这段代码相当于机

我想创建一个机器人,它将用参数响应命令。我已经让它响应消息中的字符串,但当我试图让命令工作时,机器人似乎根本没有反应。我已经研究了文档,花了很多精力试图在互联网上找到答案,但没有任何帮助。我的代码可能与internet上其他人的代码完全相同,但机器人在仍然响应消息时从不响应。我想知道关于命令应该如何工作,我是否缺少一些真正基本的东西

我已经导入了正确的库,我使用了与许多人在互联网上共享的语法完全相同的语法,但是这些命令什么都不做。我使用replit.com,它是一个浏览器IDE

这段代码相当于机器人的一半代码,到目前为止,他相当笨。到目前为止,除了命令之外,我尝试的所有方法都有效。我通常也不使用Python,但我只是遵循教程中看到的语法,以免出错。当我运行此程序时,bot成功登录,然后如果我发送!tst机器人什么都不做

from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command(name='tst')
async def test(ctx):
  await ctx.send('testt')
我主要使用了本教程: 还有库文档:

基于完整代码: 您不应该同时使用
discord.Client
命令.Bot
,因为您正在定义两个不同的Bot,但只运行其中一个
commands.Bot
扩展了
discord.Client
。将
commands.Bot
看作
discord.Client
的一个子类。以前使用过
client
的任何地方,现在都可以使用
bot

您发布的代码将正确运行,如下所示:

import discord
import os
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command(name='tst')
async def test(ctx):
  await ctx.send('testt')

@bot.event
async def on_ready():
  print ('Successful login as {0.user}'.format(bot)) 

bot.run(os.getenv('TOKEN')) 
原始答复: (这可能是其他人寻找的解决方案)

您是否正在使用on_消息中的
事件?这会阻止命令处理器获取消息。您必须手动调用命令处理器,如下所示:

@bot.event
async def on_message(message):
    # Do your stuff
    await bot.process_commands(message)
根据,您应该在重写on_消息事件时调用此函数

默认情况下,此协同程序在on_message()事件中调用。如果您选择覆盖on_message()事件,那么您也应该调用此协同程序


我不想把整件事都发出去,但其实没什么特别的,所以就这样吧。有一段时间我认为这可能是解决方案,但即使我清除了所有与消息相关的代码,它仍然没有任何作用。它可能与on_ready消息冲突吗?这只会进入IDE网站上的控制台。

Hi!欢迎来到社区!您不应该将此作为答案发布,相反,您可以编辑原始问题以添加更多信息。我编辑了我的答案,以便根据您的代码为您添加可能的解决方案。
import discord
import os
from discord.ext import commands

bot = commands.Bot(command_prefix='!')

@bot.command(name='tst')
async def test(ctx):
  await ctx.send('testt')

client = discord.Client()

@client.event
async def on_ready():
  print ('Successful login as {0.user}'.format(client)) 

client.run(os.getenv('TOKEN'))