不好意思,请问我:-)
我遇到的问题是,参与工作的Discord机器人加入成员后不会向其发送私人消息。我尝试了其他Stack Overflow帖子中建议的几种解决方案,但这不起作用。
import discord
client = discord.Client()
@client.event
async def on_member_join(member):
print(f'Someone joined')
await member.send("You joined")
client.run("XXX")
但是该函数从不执行。
如果我在?join
这样的命令中使用完全相同的代码,如下面的示例所示,它将起作用!
import discord
from discord.ext import commands
client = commands.Bot(command_prefix='?')
@client.command()
async def join(ctx):
member = ctx.message.author
print(f'Someone joined')
await member.send("You joined")
client.run("XXX")
所以我误以为on_member_join
不再起作用了吗?我在做什么错了?
感谢您的时间:-)
答案 0 :(得分:1)
从 discord.py 版本 1.5+ 开始,Intents
必须在使用前由机器人声明事件的桶类型。事件 on_member_join
需要将 discord.Intents.members
的意图设置为 True
。
一个简单的方法如下:
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix='?', intents=intents)
discord.py
1.5 版声明,如果未指定意图,则它允许除 Intents.members
和 Intents.presences
之外的所有意图。
可以在此处找到有关 Intent 的更多信息:Gateway Intents in discord.py