【发布时间】:2021-07-24 10:32:00
【问题描述】:
我正在尝试在 python 中创建一个不和谐的机器人,当有人加入服务器时,它会发送一条简单的欢迎消息。我查看了许多 youtube 教程并尝试了许多不同的方法来使其工作,但由于某种原因它不起作用。
代码中没有错误。我的代码中有一个 on_message(message) 函数,只是为了测试机器人,该函数运行良好。
另一方面,on_member_join 函数不起作用。我在我的不和谐开发者门户上启用了成员意图功能,并且该机器人具有管理员权限。我尝试将消息作为意图发送,但仍然无法正常工作。
编辑 1:根据 cmets,我删除了客户端的第二个定义。仍然无法让机器人显示欢迎信息。 on_message(message) 有效。
编辑 2:我解决了错误。该错误是由于我覆盖了客户的定义,也由于错字。感谢所有帮助过的人!
import discord
from discord.ext import commands
token = "I have my token here"
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents = intents)
@client.event
async def on_ready():
print("Bot is ready")
#respond hello to hi (for testing if the bot works)
@client.event
async def on_message(message):
if message.content == 'hi':
await message.channel.send('Hello')
#main function
@client.event
async def on_member_join(member):
guild = client.get_guild(I have my server ID here) #server id
channel = guild.get_channel(I have my channel ID here) #channel id
await channel.send(f'Welcome to the server {member.mention}! ') #edit this line to edit message
client.run(token)
【问题讨论】:
-
你为什么定义
client两次? -
删除client的第二个definicjom,你在没有任何意图的情况下覆盖第一个
-
进行了编辑,但仍然无效。
-
在文档中说需要启用“Intents.members”,在您的代码中,第一个字母没有大写(intents.members -> Intents.members),所以可以有一个对它有影响吗?
-
不,@Okkonen,他将他的 discord.Intents 实例命名为小写“intents”,所以你的建议只会抛出 NameError
标签: python discord discord.py