不和谐 py | 通过ID获取消息

Sol*_*Øut 0 python discord discord.py

我正在为我的不和谐机器人开发一个赠品系统。我将运行赠品的结束时间保存在 mysql 数据库中,当结束时间等于当前时间时,机器人会调用函数来结束赠品。在数据库中,我存储消息、通道和服务器 ID。现在问题来了。如何从ID中获取discord.Message?我尝试了以下操作,但这似乎不起作用:

giveaway_msg = bot.fetch_message(db_giveaway_message_ID)
Run Code Online (Sandbox Code Playgroud)

db_giveaway_message_ID 是消息 ID (904081961583251456)

编辑

当前代码(仍然不起作用)

async def giveaway_end(giveaway_db_fetch):
    print('Giveaway End startet')
    db_giveaway_message_ID = giveaway_db_fetch[4]
    db_giveaway_starter = giveaway_db_fetch[3]
    fb_giveaway_channel_ID = giveaway_db_fetch[5]
    db_giveaway_price = giveaway_db_fetch[1]
    print(db_giveaway_message_ID)
    
    giveaway_msg_channel = await bot.get_channel(fb_giveaway_channel_ID)
    print(f'Giveaway Message Channel = {giveaway_msg_channel.name}')
    giveaway_msg = await giveaway_msg_channel.fetch_message(db_giveaway_message_ID)
    print(f'Message found: {giveaway_msg.id}')
Run Code Online (Sandbox Code Playgroud)

它确实打印了 messageID,但什么也没发生。-没有错误-

Riv*_*veN 5

请记住,您不能使用bot .fetch_message,因为当您想要获取消息时,您必须调用通道发送消息的位置)、成员(发送此消息)或上下文(如果在命令中使用)。

此外,您当前的代码按预期工作(您希望它打印消息 ID)。你正确地获取了discord.Message你只需要用它做一些事情,而不只是打印 id 。


获取消息:

giveaway_msg_channel = bot.get_channel(fb_giveaway_channel_ID)
giveaway_msg = await giveaway_msg_channel.fetch_message(db_giveaway_message_ID)
Run Code Online (Sandbox Code Playgroud)

如果你想获取消息内容那么:

print(f'Message found: {giveaway_msg.content}')
Run Code Online (Sandbox Code Playgroud)

或消息的作者:

print(f'Message found: {giveaway_msg.author}')
Run Code Online (Sandbox Code Playgroud)

检查文档中的discord.Message