【问题标题】:I keep on getting this error: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Cannot send an empty message我不断收到此错误:discord.ext.commands.errors.CommandInvokeError:命令引发异常:无法发送空消息
【发布时间】:2021-10-12 00:31:24
【问题描述】:

每当我尝试将 f 字符串附加到列表时,我总是会收到此错误:

discord.ext.commands.errors.CommandInvokeError:命令引发异常:HTTPException:400 错误请求(错误代码:50006):无法发送空消息

变量“队列”为空。

但是,当我打印 f 字符串时,它会显示用户 ID 和消息

@client.command(name='addqueue', pass_context=True)
async def addqueue(ctx,*,reason:str):
queue=[]
queue = queue.append(f'{ctx.author.send}: {reason}')
print(f'{ctx.author.id}: {reason}\n')
await ctx.channel.send(embed=queue)

我不知道该怎么做。

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    queue.append 就地修改queue 并返回None。因此,在queue = queue.append(...) 之后,queueNone

    你应该只是append而不分配,像这样:

    queue=[]
    queue.append(f'{ctx.author.send}: {reason}')
    

    顺便说一句,您可以使用列表文字而不是 appending 到一个空列表:

    queue = [f'{ctx.author.send}: {reason}']
    

    【讨论】:

    • 我在使用您的第一个解决方案时遇到此错误:discord.ext.commands.errors.CommandInvokeError:命令引发异常:AttributeError:'list' 对象没有属性'to_dict'。我要试试其他的。
    • 我在第二个中也遇到了同样的错误。
    • @YashSharma,根据文档,the embed argument 应该是 Embed 类型,而不是列表。原始帖子中的错误发生是因为embedNone。不过,将queue 列表转换为Embed 是一个不同的问题。从错误信息来看,不可能简单地embed 一个列表。
    【解决方案2】:

    在队列的第二个声明中,queue = queue.append() 附加函数返回 None,因此您最终将设置 ctx.send(embed=None),这是错误的,因为 discord 不允许您发送空消息。 正如您所做的那样,您无法将python默认对象类型传递给ctx.send()中的embed参数,只能将Embed对象分配给它。

    要创建 Embed 对象,请参考 discord.Embed,在做像创建机器人这样复杂的事情之前,请通过做一些较小(不太复杂)的项目来了解 Python 的基础知识。

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多