命令"!没有得到机器人的回应。如果我在第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")