Python中的Discord bot-没有命令可用
我想创建一个机器人,它将用参数响应命令。我已经让它响应消息中的字符串,但当我试图让命令工作时,机器人似乎根本没有反应。我已经研究了文档,花了很多精力试图在互联网上找到答案,但没有任何帮助。我的代码可能与internet上其他人的代码完全相同,但机器人在仍然响应消息时从不响应。我想知道关于命令应该如何工作,我是否缺少一些真正基本的东西 我已经导入了正确的库,我使用了与许多人在互联网上共享的语法完全相同的语法,但是这些命令什么都不做。我使用replit.com,它是一个浏览器IDE 这段代码相当于机器人的一半代码,到目前为止,他相当笨。到目前为止,除了命令之外,我尝试的所有方法都有效。我通常也不使用Python,但我只是遵循教程中看到的语法,以免出错。当我运行此程序时,bot成功登录,然后如果我发送!tst机器人什么都不做Python中的Discord bot-没有命令可用,python,discord,command,bots,Python,Discord,Command,Bots,我想创建一个机器人,它将用参数响应命令。我已经让它响应消息中的字符串,但当我试图让命令工作时,机器人似乎根本没有反应。我已经研究了文档,花了很多精力试图在互联网上找到答案,但没有任何帮助。我的代码可能与internet上其他人的代码完全相同,但机器人在仍然响应消息时从不响应。我想知道关于命令应该如何工作,我是否缺少一些真正基本的东西 我已经导入了正确的库,我使用了与许多人在互联网上共享的语法完全相同的语法,但是这些命令什么都不做。我使用replit.com,它是一个浏览器IDE 这段代码相当于机
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'))