【问题标题】:Why won't the message edit embed send when a message is edited? (discord.py)为什么在编辑消息时不会发送消息编辑嵌入? (discord.py)
【发布时间】:2021-08-31 19:34:50
【问题描述】:

编辑消息时,我的日志嵌入未发送。有人知道为什么吗?

@client.event
async def on_message_edit(before, after):
    with open('logchannel.json', 'r') as f:
        logs = json.load(f)

    logchannel = discord.utils.get(logs)
    embed = discord.Embed(color=0x0000ff, title="Message Edited", description=f"{before.author.mention} edited a message.")
    embed.add_field(name="Original Message", value=before.content, inline=True)
    embed.add_field(name="Edited Version", value=after.content, inline=True)   
    await logchannel.send(embed=embed)

【问题讨论】:

  • 您的代码应该可以正常工作,您是否遇到任何错误,您是否尝试过调试?

标签: python-3.x discord discord.py


【解决方案1】:

discord.utils.get 用于从可迭代对象中获取具有指定属性的元素。你正在寻找discord.Client.get_channel。

另外,r 模式和inline=True 是不必要的。它们是隐含的。

@client.event
async def on_message_edit(before, after):
    with open('logchannel.json') as f:
       logs = json.load(f)

    logchannel = client.get_channel(logs)
    embed = discord.Embed(color=0x0000ff, title='Message Edited', description=f'{before.author.mention} edited a message.')
    embed.add_field(name='Original Message', value=before.content)
    embed.add_field(name='Edited Version', value=after.content)
    await logchannel.send(embed=embed)

【讨论】:

  • 我做了所有这些,现在我有这个错误:忽略 on_message_edit Traceback 中的异常(最后一次调用):文件“/usr/local/lib/python3.7/dist-packages/discord/ client.py”,第 343 行,在 _run_event 中 await coro(*args, **kwargs) 文件“asmusic.py”,第 204 行,在 on_message_edit 中断 AttributeError: 'NoneType' 对象没有属性 'send'
  • @TheSuperRobert2610 logchannel.json的内容是什么?
  • 公会ID,选择频道ID
  • @TheSuperRobert2610 上下文不足。我需要实际内容,如果您不想共享 ID,可以将其替换为 guild_id 和 channel_id
  • 好的,这里是:"797921708861423640": 797921708861423643
猜你喜欢
  • 2020-03-17
  • 2021-03-19
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2020-08-09
  • 2023-04-02
相关资源
最近更新 更多