【问题标题】:Discord Bot pin messageDiscord Bot pin 消息
【发布时间】:2019-07-04 07:46:12
【问题描述】:

我对 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 文档时,它说 放置 /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

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

【问题讨论】:

标签: python documentation discord discord.py


【解决方案1】:

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

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

原文:

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

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

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

【讨论】:

  • 嘿,所以我使用了您的回复,但是当我运行代码时仍然出现错误: AttributeError: 'Client' object has no attribute 'get_message' 但是如果我使用 await message.channel。 get_message(ID) 它似乎可以工作,但是对于 client.pin_message(msg_to_pin) 出现相同的错误我加倍检查以确保 manage_permission 也已打开。 :/我不明白我哪里出错了,因为您的解决方案很有意义并且应该可以工作:/
  • 尝试运行print(discord.__version__) 如果版本是1.0 或更高版本,则您使用的是不完全官方的预发布重写分支。这是一件好事,但您确实需要阅读相应的文档,因为有许多重要的变化:discordpy.readthedocs.io/en/rewrite/index.html
  • @Patrcik 你是一个救生员,谢谢你成功了!! :D 所以我应该继续使用 message.channel。从现在开始代替客户端。
猜你喜欢
  • 2021-03-27
  • 2021-08-27
  • 2021-08-12
  • 2021-10-30
  • 2020-12-01
  • 2021-03-02
  • 2021-01-12
  • 2021-06-05
  • 2018-07-07
相关资源
最近更新 更多