Discord.py欢迎机器人加入会员活动未被呼叫

Discord.py欢迎机器人加入会员活动未被呼叫,discord,discord.py,discord.py-rewrite,Discord,Discord.py,Discord.py Rewrite,我最近对使用discord机器人很感兴趣,从我所看到的来看,这段代码应该可以工作,但它不是。。。 我只是在玩API,因为它很有趣,所以我对这个很陌生。我只想机器人在有人加入时欢迎他们 import discord client = discord.Client() @client.event async def on_ready(): print('We have logged in as {0.user}'.format(client)) channel = client.

我最近对使用discord机器人很感兴趣,从我所看到的来看,这段代码应该可以工作,但它不是。。。 我只是在玩API,因为它很有趣,所以我对这个很陌生。我只想机器人在有人加入时欢迎他们

import discord

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))
    channel = client.guilds[0].get_channel(CHANNEL ID)
    await channel.send("Bot online")

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

@client.event
async def on_member_join(member):
    print(f'{member.name} has joined the server')
    channel = client.guilds[0].get_channel(CHANNEL ID)
    print(channel)
    await channel.send(f'{member.name} has joined the server')

@client.event
async def on_member_remove(member):
    print(f'{member.name} has left the server')
    channel = client.guilds[0].get_channel(CHANNEL ID)
    print(channel)
    await channel.send(f'{member.name} has left the server')

client.run('TOKEN HERE')

你忘了装潢师的支架了

@client.event
应该是

@client.event()

编辑:显然不是。当OP回复更多信息时,将更新此答案。

对于discord.py>=1.5

1.5添加了对的支持,默认情况下,您的机器人无法像以前版本那样访问公会成员。如果您的bot位于不到100台服务器中,那么您可以在无需验证的情况下启用这些意图。您应该在Discord开发者门户的Bot页面底部看到这些设置。如果两者都启用,则需要更改客户端(或commands.Bot)实例化,如下所示:

intents = discord.Intents.all()
client = discord.Client(intents=intents)
当我测试这一点时,事件正在启动,但我敢打赌你的问题在于:

channel = client.guilds[0].get_channel(CHANNEL ID)

只使用use来确保您实际抓取了预期的频道将更加可靠,discord上的所有频道ID都是唯一的,因此您不需要使用帮会对象。另外,
CHANNEL ID
将不是一个有效的变量,但我猜您刚刚修改了它。

我认为这不是问题所在。如果是这样的话,用户就不会启动他们的on_ready事件,他们会发布一个问题。我一直在写没有括号的事件。可能不应该,但我会。刚刚测试过&它只在
main
文件中有效,它会在
Cogs
中立即崩溃。我想你是对的,但是你真的不应该有这么大的主文件(假设你有,就像你说的你“一直”这么做”)。discord.py
event
decorators没有括号,但是像
command
decorators这样的东西确实需要启动我的on_ready事件,但没有其他东西。这段代码已经在另一个系统上进行了测试,效果良好。我不知道为什么它对我的不起作用。你有任何错误吗?你准备好开火了吗?我真的不明白为什么这行不通。考虑使用<代码>命令<代码> > <代码>前缀< /代码>,而不是手动解析每一条消息(<代码>如果消息。内容。StastSuff.<代码> >)我的OnLeRead事件正在启动,但没有其他内容。这段代码已经在另一个系统上进行了测试,效果良好。我不知道为什么它对我的不起作用。我已经测试过了,我也不能让它启动,即使它应该启动的唯一一行是打印行。我怀疑这是否引发了一些我们不理解的警告。如果我完全复制了您的代码,请更改您的所有
客户协会[0].get_channel
只发送给
客户端。get_channel
您的所有事件都适用于Medos您的机器人在目标频道中是否具有发送消息权限?关于编辑的内容,您是对的。尽管如此,我的on_ready活动仍在启动,但没有其他活动。这段代码已经在另一个系统上进行了测试,效果良好。我不知道为什么它对我不起作用你在运行什么版本?我让它与discord.py 1.4.1、Python 3.8.5一起使用