找不到 discord.py 命令

Posted

技术标签:

【中文标题】找不到 discord.py 命令【英文标题】:discord.py command is not found 【发布时间】:2021-11-11 12:38:47 【问题描述】:

机器人一直给我这个错误:

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

import discord
from discord.ext import commands
from datetime import datetime
from discord import client

print("holaaaaaa")
token = "token"
client = commands.Bot(command_prefix=("."))

contatore1 = 0
redstar = "@everyone Vorrei fare una rs "
partecipanti = "\n Partecipanti: "

support = "0/4"

@client.event
async def on_ready():
    print(client.user, "ONLINE ","(ID ", client.user.id,")")

@commands.command()
async def rs(message):
    if message.channel.id == 605465213956915218:
        global redstar
        global contatore5
        global tag5
        global support5
        global partecipanti
        redstar = "@everyone Vorrei fare una " + message.channel.name
        tag5 = "\n" + message.author.mention
        contatore5 = 1
        if (contatore5 == 1):
            support5 = "1/4"
            await message.send(redstar + partecipanti + support5 + tag5)
    if (message.channel.id == 605465543134150657):
        global contatore6
        global tag6
        global support6
        redstar = "@everyone Vorrei fare una " + message.channel.name
        tag6 = "\n" + message.author.mention
        contatore6 = 1
        if (contatore6 == 1):
            support6 = "1/4"
            await message.send(redstar + partecipanti + support6 + tag6)

client.run(token)

另外,应该注意 on_ready 事件会运行。 感谢您提供任何帮助:)

【问题讨论】:

我猜它必须是client.command(),因为它不在Cog 中。因此,命令以ctx 参数开头。 message 主要用于像 on_message 这样的事件。要在命令中使用message,只需说ctx.message 它不必是@client.command,即使它在齿轮之外,但@client.command 确实使它更容易。如果您出于某种原因想要在不使用@client.command 的情况下发出命令,那么您可以在函数下方和client.run 之前的某处添加client.add_command(rs) 如果你阅读源代码你可以看到@client.command actually uses client.add_command 【参考方案1】:

您可以通过 2 种方法继续解决您的问题。

Dominik 建议的那个,您需要将@commands.command() 更改为@client.command()。所以喜欢改变

@commands.command()
async def rs(message):

@client.command()
async def rs(message):

之后使用bot.add_command 手动添加命令。有了这个,你必须添加

client.add_command(rs)

位于命令定义下方和 client.run 上方。

我个人建议第一种方法,因为它更简洁。

【讨论】:

以上是关于找不到 discord.py 命令的主要内容,如果未能解决你的问题,请参考以下文章

discord.py - 检查是不是找不到子命令

Bash:Python3:找不到命令(Windows,discord.py)

Discord.py 重写 - 查看成员是不是被服务器静音,在 API 参考中找不到任何信息

Discord bot python:discord.errors.ClientException:找不到ffmpeg

Discord Py 从服务器运行命令

discord py - 自定义命令前缀不起作用(没有命令运行)