如何修复“在'message'中找不到引用'channel'”

-2 投票
1 回答
32 浏览
提问于 2025-04-13 14:20

在写 message.channel.id 的时候,出现了一个错误(找不到 'channel' 的引用),我在网上搜索了很久,也没找到类似的问题和解决办法。

@bot.event
async def on_message_edit(before, after):
    if message.channel.id == 1218632975441330266:
        pass
    else:
        chan = bot.get_channel(1203013518408810497)
        embed = disnake.Embed(title=f"{before.author} redacted his message",
        description=f"Before: {before.content}\nAfter: {after.content}\nAuthor:     {before.author.mention}\nWhere: {before.channel.mention}",
        timestamp=datetime.now(), color=disnake.Colour.blue())
        embed.set_author(name=after.author.name, icon_url=after.author.display_avatar)
        await chan.send(embed=embed)

我知道我需要把 message 加到参数里,但加上之后,"after" 这个参数就不管用了,出现了一个错误 TypeError: on_message_edit() 缺少一个必需的位置参数:'after',所以我根本不知道该怎么做……

Disnake 版本是 2.9.1(我确认过了)

1 个回答

0

on_message_edit 这个函数只需要两个参数:beforeafter,你不能随便再加其他参数。如果你想检查消息的频道 ID,可以用 before.channel.id,因为 beforeafter 都是 disnake.Message 类型的对象。

if before.channel.id == 1218632975441330266:
   return

撰写回答