如何将消息(str)转换为discord(int)的消息ID?

2024-10-03 04:33:25 发布

您现在位置:Python中文网/ 问答频道 /正文

bot=discord.Client()

@bot.event
async def on_message(ctx):
    idbot = 835947059721797702
    if ctx.author.id == idbot:
        channelsnipe = bot.get_channel(825523364844142601)
        messageid = ctx.content
        await asyncio.sleep(0.2) # Give time for reaction to update on cache
        reaction = messageid.reactions[0] # Get first reaction of a message
        emoji = reaction.emoji
        await messageid.add_reaction(emoji)

我试图从用户(idbot)获取消息,并将其用作ID,以便为ID的消息添加反应。但是当我尝试这段代码时,我有一个错误: reaction = messageid.reactions[0] # Get first reaction of a message AttributeError: 'str' object has no attribute 'reactions'


Tags: ofid消息messagegetonbotawait
2条回答

如果您的邮件包含要获取的邮件的id,请通过

messageid = int(ctx.content) 

之后,您可以使用^{}获取消息。然而,这只有在您知道您想要获取的消息位于哪个通道时才起作用。如果消息在channelsnipe中,则通过

message = await channelsnipe.fetch_message(messageid)

得到第一反应

reaction = message.reactions[0]

bot=discord.Client()

@bot.event
async def on_message(ctx):
    idbot = 835947059721797702
    if ctx.author.id == idbot:
        channelsnipe = bot.get_channel(825523364844142601)
        messageid = int(ctx.content) 
        message = await channelsnipe.fetch_message(messageid)
        await asyncio.sleep(0.2) # Give time for reaction to update on cache
        reaction = message.reactions[0] # Get first reaction of a message
        emoji = reaction.emoji
        await message.add_reaction(emoji)

首先,为了避免与命名混淆,^{}的参数是一个^{}对象,通常称为message,而不是ctx

有一些与Message对象相关的属性。message.content的值是消息的字符串内容,message.id是消息id,message.reactions^{}对象的列表

如果需要按照用户消息中提供的ID查找消息,则需要执行以下操作

message_id = int(message.content)

这是到目前为止常用的Python,然后使用该ID查找消息,可能通过调用相关通道上的^{}。如果来自用户的消息与您要访问的消息位于同一频道,则可以执行以下操作:

target_message = await message.channel.fetch_message(message_id)

然后,您有一个Message对象,如上所述

相关问题 更多 >