Я хочу добавить в свой DiscordBot функцию, показывающую количество участников в форме имени voice_channel. Число участников также должно обновляться, если кто-то присоединяется к серверу или покидает его.
Вот код:
async def memberUpdate(guild):
categories = discord.utils.get(guild.categories, name="Stats")
voice = discord.utils.get(categories.voice_channels, name=str(categories.voice_channels[0])) # Get the first voice_channel in this category
update = "Member count: " + str(guild.member_count)
await voice.edit(name=update) # Edit voice channel
# First Time setting it up with "stats"-command
@bot.command()
async def stats(ctx):
guild = ctx.message.guild
# Write message, if this category already exists!
if discord.utils.find(lambda m: m.name == "Stats", guild.categories):
await ctx.message.channel.send("The category already exists!")
# If not, do this:
elif discord.utils.find(lambda m: m.name == "Stats", guild.categories) is None:
await guild.create_category("Stats")
category = discord.utils.get(guild.categories, name="Stats")
await category.create_voice_channel("Member count: ")
await memberUpdate(guild) # Update it for the first time when set up
@bot.event
async def on_member_join(member):
guild = member.guild
await memberUpdate(guild)
@bot.event
async def on_member_remove(member):
guild = member.guild
await memberUpdate(guild)
Для понимания, я перевел только имена и комментарии.
Когда я устанавливаю его в первый раз, memberUpdate работает нормально, обновляя количество участников. Когда я позволял кому-то присоединиться к серверу, он также активировал функцию обновления. Но когда я удаляю одного и того же человека, это ничего не меняет. Я пытался выяснить, вызывает ли событие on_member_remove проблемы, но когда я снова устанавливаю его u и удаляю кого-то first , количество участников обновляется. После этого он просто больше не будет редактировать.
Это проблема Discord, что не может так быстро менять имена каналов? Или это проблема в моем коде?