discord.py无法更改频道的名称

2024-10-04 01:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,最近我尝试创建一个bot,它可以根据服务器上的成员数量更改语音频道的名称,但我最终得到了以下错误:await memberchannel.edit(name = ">> 👥ᴍᴇᴍʙᴇʀꜱ: " + guild.member_count) AttributeError: 'NoneType' object has no attribute 'edit'

这是我的代码,我不知道如何访问.edit属性:

async def on_member_join(member):
    guild = member.guild
    memberchannel : discord.VoiceChannel = get(guild.channels, id=MemberCounterChannel)
    await memberchannel.edit(name = ">> 👥ᴍᴇᴍʙᴇʀꜱ: " + guild.member_count)

我在on_member_remove函数中也做了同样的事情


Tags: name服务器名称数量onbotcount成员
2条回答

使用on_member_join或其他与成员事件相关的事件必须要求启用成员意图。这可以让这些事件运行,因为它们是私有的,应该小心使用

可以从Discord开发者门户启用意图,从那里您只需要确保在“Bot”类别的意图中启用了Member。然后,您需要在定义bot或客户端的部分中定义并使用bot代码中的意图:

intents = discord.Intents.default()
intents.members = True

client = commands.Bot(command_prefix='your bot prefix', intents=intents)

启用意图后,成员事件将起作用。在代码中,memberchannel也没有定义,也不是一个Discord参数

这将获得您想要通过其ID编辑的频道,并在用户加入该用户加入的公会的当前成员计数时进行编辑

async def on_member_join(member):
    member_channel = client.get_channel(channel id)
    await member_channel.edit(name=f"Members: {member.guild.member_count}")

我必须使用discord developers面板切换应用程序中的所有意图,并将代码保留如下(ConfigFile是一个包含所有变量的json文件):

memberchannel: discord.VoiceChannel = get(guild.channels, id=ConfigFile["MemberCounterChannelID"])
       membercount = guild.member_count - 1
       await memberchannel.edit(name="{0} {1}".format(ConfigFile["MemberCounterChannelName"], membercount))

我还做了membercount = guild.member_count - 1部分,因为我只在我的服务器上使用这个bot,它不是商业用途,所以我不需要它来计算成员bot

相关问题 更多 >