Python Discord on_member_join

时间:2020-10-05 22:07:15

标签: python python-3.x discord bots

不好意思,请问我:-)

我遇到的问题是,参与工作的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不再起作用了吗?我在做什么错了?

感谢您的时间:-)

1 个答案:

答案 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.membersIntents.presences 之外的所有意图。

可以在此处找到有关 Intent 的更多信息:Gateway Intents in discord.py