猿问

类型错误:** 之后的 format() 参数必须是映射,而不是附件

我正在尝试使用我的不和谐机器人解决日志模块的问题。我收到错误TypeError: format() argument after ** must be a mapping, not Attachment


cogs\core.py", line 351, in on_message_delete

    delmessage.add_field(name='**Attachment**', value='[{filename}]({url})'.format(**attachment), inline=True)

TypeError: format() argument after ** must be a mapping, not Attachment


我不确定是什么原因造成的。


这是我正在使用的内容:


async def on_message_delete(self, message):

    guild = message.guild

    author = message.author

    bot_member = guild.me

    time = dt.datetime.utcnow()

    now = dt.datetime.utcnow()

    if author.bot:

        return

    if not guild:

        return

    cleanmsg = message.content

    for i in message.mentions:

        cleanmsg = cleanmsg.replace(i.mention, str(i))

    name = author

    name = " ~ ".join((name.name, name.nick)) if name.nick else name.name

    changes = True

    if author.id != self.bot.user.id:

        infomessage = "A message by {} was deleted.".format(message.author.mention, message.channel.mention)

        delmessage = discord.Embed(description=infomessage, colour=discord.Color.purple(), timestamp=time)

        delmessage.add_field(name="Message:", value=cleanmsg)

        delmessage.set_footer(text="ID: {}".format(message.author.id))

        delmessage.set_author(name=name + "'s message was deleted.", icon_url=message.author.avatar_url)

        if message.attachments:

            for attachment in message.attachments:

                delmessage.add_field(name='**Attachment**', value='[{filename}]({url})'.format(**attachment), inline=True)

        await self.bot.send_log_message(guild, embed=delmessage)


陪伴而非守候
浏览 495回答 2
2回答

交互式爱情

您无法解包对象以获取其属性(除非该对象是专门为此设计的)。相反,您可以编写格式字符串以通过点表示法访问属性:delmessage.add_field(name='**Attachment**', value='[{0.filename}]({0.url})'.format(attachment), inline=True)
随时随地看视频慕课网APP

相关分类

Python
我要回答