簡體   English   中英

僅從 Discord 中的 1 個通道發送消息(discord.py 機器人)

[英]Sending messages from only 1 channel in Discord (discord.py bot)

對於我的 Discord 機器人,我試圖讓它只響應一個頻道中的消息。 我有以下代碼:

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

這個想法是它獲取已發送消息的通道 id,如果它與指定通道匹配,它將回復“Hi。”,我的問題是當我從指定通道發送消息時。 機器人不會做任何事情,我檢查了機器人的權限。 並且它具有此類所需的所有權限,為了仔細檢查,我在代碼的前面添加了一個命令,以確保機器人正常工作。 我可以很好地執行所述命令嗎? 有誰知道我在這里想念什么?

我確實知道我可以將機器人的權限更改為僅讀取指定頻道,但我希望它能夠讀取某些命令的其他頻道。 我只想為這個特定的實例閱讀這個頻道,我認為這將是最好的方法。 任何幫助是極大的贊賞!

編輯:經過一些研究,我發現命令和事件不能很好地混合,除非添加以下行:

await client.process_commands(message)

但是,這似乎修復了機器人不執行命令但仍在執行事件的錯誤。 我的問題恰恰相反——機器人可以很好地讀取命令,但它沒有執行事件。 無論如何,我將此行添加到我的代碼中,但仍然無法解決此問題。

發生這種情況是因為沒有像“發送”事件這樣的事情。 我認為您想使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM