首页 > 解决方案 > Discord Bot pin 消息

问题描述

我对 discord bot 和 python 有点陌生,所以我在理解哪里出错时遇到了一些麻烦。基本上我想让我的机器人固定一条消息。我找到了一个 python 代码的文档,它说使用 pin_message() 所以我有:

if "pinm()" == message.content.lower():
   #to pin a message
   message.channel.pin_message(messageID)

但我收到以下错误 AttributeError: 'TextChannel' object has no attribute 'pin_message'

当我查看 Discord 文档时,它说 PUT /channels/{channel.id}/pins/{message.id} 我真的不明白如何将其转换为代码,所以我有这样的东西:

    if "pinm()" == message.content.lower():
        #to pin a message
        allPins = message.channel.pins(messageID)

但我得到错误 pin() 需要 1 个位置参数,但给出了 2 个。我关注的来源是

https://discordapp.com/developers/docs/resources/channel#add-pinned-channel-message

https://discordpy.readthedocs.io/en/latest/api.html#message

谁能告诉我我哪里出了问题?:(

标签: pythondocumentationdiscorddiscord.py

解决方案


编辑:您实际上正在使用,所以您需要这样做

msg_to_pin = await message.channel.get_message(int(messageID))
await msg_to_pin.pin()

原来的:

您需要使用Client.pin_message, 传递一个Message对象(而不是 id)。您通常已经拥有 message 对象,否则您将不得不使用Client.get_message,这要求您还知道消息所在的频道。

msg_to_pin = await client.get_message(message.channel, messageID)
await client.pin_message(msg_to_pin)

确保您的机器人具有manage_messages权限,否则将失败。


推荐阅读