当if语句被放置在on_message命令中用于事件时,Discord Bot不响应



命令"!没有得到机器人的回应。如果我在第19行删除If语句,bot将响应任何消息,但是一旦我为指定的字符串添加If语句,我就不会得到任何响应。

关于如何处理这个问题,我需要帮助。我有代码和错误,它给出了错误:

import os
import discord
from dotenv import load_dotenv
load_dotenv()
intents = discord.Intents.default()
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'{client.user} is now connected!')
@client.event
async def on_message(message):
if message.author == client.user:
return
**    if message.content == '!hungry':
await message.channel.send('Sure. Here you go.')
await client.process_commands(message)**
client.run(os.getenv('TOKEN'))

这段没有if语句的代码运行良好,因为bot会响应我输入的任何内容,如下所示:

import os
import discord
from dotenv import load_dotenv
load_dotenv()
intents = discord.Intents.default()
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'{client.user} is now connected!')
@client.event
async def on_message(message):
if message.author == client.user:
return
**    await message.channel.send('Sure. Here you go.')
await client.process_commands(message)
**
client.run(os.getenv('TOKEN'))

您没有message_content意图,因此您无法读取消息。有关intent的更多信息,请参考文档。

另外,考虑只使用内置的命令框架,而不是手动解析消息。

我也有同样的问题。

我可以通过在Discord开发者页面上切换"特权网关意图"来使其工作。您可以在Bot的Bot部分找到。

我使用了下面的代码:(抱歉的格式,我仍然是新的堆栈溢出)

import discord
intent = discord.Intents.all()
client = discord.Client(intents = intent)
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
if message.author.name == client.user: return
if message.content.startswith('hello'):
await message.channel.send('Hello!')
client.run("token")

最新更新