gpt4 book ai didi

Discord.py on_member_join 和 on_member_leave 不起作用

转载 作者:行者123 更新时间:2023-12-03 14:32:05 31 4
gpt4 key购买 nike

我开始使用 discord.py (不是 discord.ext 命令,只有 import discord )。最近做了一个 channel , channel 名称显示公会成员人数,每次有人加入或离开都会更新。这是我的代码:

import discord

client = discord.Client()

@client.event
async def on_ready():
print("Bot is ready")

@client.event
async def on_member_join(member):
channel = client.get_channel('channel id here')
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count()))

@client.event
async def on_member_leave(member):
channel = client.get_channel('channel id here')
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count()))

client.run('my token here')
我还加了 client.on_message命令,以便机器人将该名称编辑为我输入的任何内容。
@client.event
async def on_message(message)
if message.content == 'rename channel':
channel = client.get_channel('channel id here')
await channel.edit(name = 'TEST')
现在,在添加了一些用于调试的打印后,我发现 on_member_join()on_member_leave()永远不会被调用,但是当我键入命令时,机器人会编辑 channel 的名称。那是一个语音 channel ,显示成员数量。没有任何错误。我读错了 API 吗?请帮忙

最佳答案

discord 中任何类型的 ID 都应作为整数传递,而不是字符串。此外, discord.Guild.member_count 是一个属性,而不是一个方法,所以不用括号就可以使用它。您还应该使用 on_member_remove() 而不是 on_member_leave() .

import discord

client = discord.Client()

@client.event
async def on_ready():
print("Bot is ready")

@client.event
async def on_member_join(member):
channel = client.get_channel(ID)
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count))

@client.event
async def on_member_remove(member):
channel = client.get_channel(ID)
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count))

client.run('my token here')

关于Discord.py on_member_join 和 on_member_leave 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62123044/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com