【问题标题】:Sending messages from only 1 channel in Discord (discord.py bot)在 Discord (discord.py bot) 中仅从 1 个频道发送消息
【发布时间】:2022-01-21 20:44:10
【问题描述】:

对于我的 Discord 机器人,我试图让它只响应一个频道中的消息。我有以下代码:

@client.event
async def send(message):
  if message.channel.id == 897042290487492638:
    await message.channel.send('Hi!')

这个想法是它获取已发送消息的通道 id,如果它与指定的通道匹配,它将以“Hi!”响应。我的问题是当我从指定频道发送消息时,机器人不会做任何事情。我检查了机器人的权限,它拥有类似这样的所有必要权限。为了仔细检查,我在代码的前面添加了一个命令,以确保机器人正常工作,并且我可以很好地执行该命令。有人知道我在这里缺少什么吗?

我知道我可以将机器人的权限更改为仅读取指定频道,但我希望它能够读取某些命令的其他频道。我只想为这个特定的实例阅读这个频道,我认为这将是最好的方法。非常感谢任何帮助!

编辑:经过一些研究,我发现命令和事件不能很好地混合,除非添加以下行:

await client.process_commands(message)

但是,这似乎修复了机器人不执行命令但仍在执行事件的错误。我的问题恰恰相反——机器人可以很好地读取命令,但它没有执行事件。无论如何,我将这一行添加到我的代码中,但仍然无法解决此问题。

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    发生这种情况是因为没有类似 "send" 事件。我想你想使用on_message 事件:

    @client.event
    async def on_message(message):
      if message.channel.id == 897042290487492638:
        await message.channel.send('Hi!')
    
      await client.process_commands(message)
    

    记住它需要intents.messages

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2023-03-27
      • 2022-01-05
      • 2018-11-24
      • 2023-03-07
      • 2018-11-24
      • 2021-03-24
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多