Бот вседозволенно меняет роли мемберам

Бот, который меняет никнейм от его содержания, меняет никнеймы вседозволено. Этот бот смотрит через guildMemberUpdate, если мембер поменял ник на сервере в форме Nickanme (Realname), то выдаёт ему роль, и отбирает старую.

Вот код:

client.on("guildMemberUpdate", async function (oldMember, newMember) {

    if (oldMember !== newMember.username && newMember.username !== null){
        not_member_role = newMember.guild.roles.cache.get("968239763708579881")
        member_role = newMember.guild.roles.cache.get("972763466995761152")

        splitted_nick = newMember.user.username.split(' ')

        if (splitted_nick.length == 2) {
            if (splitted_nick[1].startsWith('(') && splitted_nick[1].endsWith(')')) {
                await newMember.roles.add(member_role)
                await newMember.roles.remove(not_member_role)
            }
            else {
                await newMember.roles.remove(member_role)
                await newMember.roles.add(not_member_role)
            }    
        }
        else{
            await newMember.roles.remove(member_role)
            await newMember.roles.add(not_member_role)
        }
    }
})

Но также имеется и код на python,именно этой же части кода, в котором всё рабоатет отлично. Код предоставил @denisnumb, огромное ему спасибо.

@bot.event
async def on_member_update(before, after):
    if before.nick != after.nick and after.nick != None:

        # роль, когда ник не по форме
        not_member_role = after.guild.get_role(id)
        # роль, когда ник оформлен правильно
        member_role = after.guild.get_role(id)

        splitted_nick = after.nick.split(' | ')

        if len(splitted_nick) == 2:
            if splitted_nick[1].startswith('(') and splitted_nick[1].endswith(')'):
                await after.add_roles(member_role)
                await after.remove_roles(not_member_role)
            else:
                await after.remove_roles(member_role)
                await after.add_roles(not_member_role)
        else:
            await after.remove_roles(member_role)
            await after.add_roles(not_member_role)

Есть ли догадки как решить данную проблему?


Ответы (1 шт):

Автор решения: Corrygan

Скорее всего, проблема в том, что вы забыли указать в скобках id роли, а оставили просто слово ‘id’ Может есть еще ошибки, но я увидел только это.

not_member_role = after.guild.get_role(id)
member_role = after.guild.get_role(id)
→ Ссылка