当前位置: 首页 > 知识库问答 >
问题:

Discord Bot-AttributeError:“客户端”对象没有“命令”属性

穆智刚
2023-03-14

我正试图创建一个新的不和谐机器人,当试图创建一个向机器人当前所在的所有不和谐服务器宣布的消息时,出现了一个问题。

我试图解决这个问题,但没有结果,这包括查找、阅读文档,当然还有尝试新代码。


import discord
import asyncio 
from discord.ext import commands
from discord.ext.commands import Bot

TOKEN = [REDACTED]



# client = discord.Client()

client = Bot("!")

@client.event
async def on_message(message):
    # we do not want the bot to reply to itself
    if message.author == client.user:
        return

    if message.content.startswith('!hello'):
        @client.command(pass_context=True)
        async def broadcast(ctx, *, msg):
                for server in bot.guilds:
                    for channel in server.channels:
                        try:
                            await channel.send(msg)
                        except Exception:
                            continue
                        else:
                            break

我希望程序将我的消息发送到bot当前所在的所有服务器。

例:!你好,你好,这是一个通告!

应该触发以下消息!hello将在每个服务器上广播。

编辑:经过一些帮助,我仍然有一个问题!现在的错误是,即使在执行命令之后,也不会显示任何内容,如果我再次执行,则会出现错误:“命令广播已注册。”

共有1个答案

朱鹤轩
2023-03-14

为什么要使用客户端。在客户端内部执行命令。像这样的事件

只需使用命令即可:

@client.command(pass_context=True)
async def hello(ctx, *, msg):
    for server in client.servers:
        for channel in server.channels:
            try:
                await client.send_message(channel, msg)
            except Exception:
                continue
            else:
                break

这将把消息发送到帮会中机器人有权发送消息的第一个通道。

对于未来的引用,考虑升级到最新的API版本,因为旧的版本不被支持,您将很难得到帮助。对于新API,代码如下所示:

@client.command()
async def hello(ctx, *, msg):
    for server in bot.guilds:
        for channel in server.channels:
            try:
                await channel.send(msg)
            except Exception:
                continue
            else:
                break

编辑:根据Patrick的评论,您的特定错误表明您正在使用Client而不是Bot,如果是这样,请使用@bot.command

 类似资料:
  • 我设置不和谐欢迎机器人,在python上,这是错误: 文件“welcome bot.py”,第27行,在on_member_join Wait client中。send_message(member,newUserMessage)AttributeError:“Client”对象没有属性“send_message”

  • 问题内容: 我的flask登录有问题。填写登录表单并单击“提交”后,出现此错误: Flask-login AttributeError:“用户”对象没有属性“ is_active” 创建了一些测试用户。而且登录模板没有问题 追溯: My code in views: My model: 问题答案: 你应该在模型上进行子类化。你还应该添加一个user_loader

  • 问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。

  • 问题内容: 我如何解决此错误,我是从GitHub下载此代码的。 引发错误 请帮我解决这个问题! 我用了: 我得到这个错误。有人帮我,我只想让它工作为什么这么难? 问题答案: 我怀疑您从中复制代码的地方启用了急切执行功能,即在程序开始时调用了该位置。 您也可以这样做。希望能有所帮助。 更新:请注意,默认情况下,TensorFlow 2.0中启用了急切执行。因此,以上答案仅适用于TensorFlow

  • 问题内容: 下面的代码给出了错误: 码: 问题答案: 从代码中,我可以看到你希望允许用户下载pdf。 现在开始 去 http://localhost:5000

  • 问题内容: 当我尝试时,会发生错误: 我找到了带有pyelasticsearch.py 的链接https://github.com/toastdriven/pyelasticsearch/blob/master/pyelasticsearch.py​​#L424-469,但我不知道它是哪个版本。无论如何,该代码中没有购买我的pyelasticsearch.py​​。任何人都有相同的经历吗?感谢您的