在 Discord (discord.py bot) 中仅从 1 个频道发送消息
Posted
技术标签:
【中文标题】在 Discord (discord.py bot) 中仅从 1 个频道发送消息【英文标题】:Sending messages from only 1 channel in Discord (discord.py bot) 【发布时间】: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)
但是,这似乎修复了机器人不执行命令但仍在执行事件的错误。我的问题恰恰相反——机器人可以很好地读取命令,但它没有执行事件。无论如何,我将这一行添加到我的代码中,但仍然无法解决此问题。
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于在 Discord (discord.py bot) 中仅从 1 个频道发送消息的主要内容,如果未能解决你的问题,请参考以下文章
Discord.py Bot 将文件发送到 Discord 频道
在 Discord (discord.py bot) 中仅从 1 个频道发送消息
Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)