【问题标题】:Discord Bot not recognizing command namesDiscord Bot 无法识别命令名称
【发布时间】:2021-11-10 15:01:05
【问题描述】:

这是我为了启动我的不和谐机器人而写的,但是每当我尝试使用命令 ?hi 时,我都会收到错误消息

忽略命令 None 中的异常: discord.ext.commands.errors.CommandNotFound:找不到命令“hi””

我尝试了几件事,但我是新手,没有任何效果。

import discord 
from discord.ext import commands, tasks 
import os 
import random 

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

@client.command
async def hi(ctx):
  await ctx.send("Hello World")

下面的答案有助于解决这个问题,这是我的新代码,因为机器人现在不给出错误消息,但不响应命令

import discord 
from discord.ext import commands 
import os 
import random 

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

client.run('Token')

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

@client.command 
async def hi(ctx): 
  await ctx.send("Hello World")

【问题讨论】:

  • 以前从未创建过机器人,但您在函数之前不需要@client.command(name='hi') 之类的东西吗?
  • 好吧@depperm 我试过了,现在它正在识别命令,我收到一条我理解更少的新错误消息
  • 新的错误信息是什么?
  • @depperm 我确实一直在弄乱它,也许你可以帮忙错误@client.command async def hi(ctx): @client.command(name=hi(ctx)) await ctx.send("Hello World")
  • 请编辑您的问题或提出新问题。缩进对python很重要。你看起来不像我上面评论的那样。

标签: python discord command bots


【解决方案1】:

要创建 discord 机器人,您需要 discord 提供的身份验证令牌。我看到你的机器人使用 discord.py。他们对how to create a bot account有解释

至于你的机器人的代码,你首先需要创建一个机器人客户端然后运行它,就像这里

import discord

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))


client.run('your token here')

运行机器人时不要忘记添加令牌

在您完成所有操作后,您可以使用 discord.ext 模块来像您一样创建命令。 (您的代码有效,只是缺少上面显示的整个不和谐机器人部分)

ext代表扩展,如果你连主模块(discord)都没有,那么它什么也做不了

不要认为 discorddiscord.ext 是 2 个不同的模块,因此您需要同时导入这两个模块

【讨论】:

  • 我这样做了,现在一旦我运行它说我已经以我的机器人身份登录(谢谢),我输入了命令,现在我没有收到错误,但我的机器人没有当我输入 ?hi 时不会发回任何东西
  • @RandomDuck 你能用你当前的代码更新问题吗?
  • @depperm 确定一秒,完成
  • @RandomDuck 它是 client.command() 而不是 client.command 括号在这里很重要。还要确保 client.run() 位于程序的末尾