@Skauyt

Анти-слив система, почему не работает код?

Я пытаюсь сделать так, чтобы при выдаче определенной роли от модератора бот выводил ошибку об сливе, и не выдавал роль либо забирал ее . Кратко говоря анти-слив систему. Я пытался сделать через client.event ,но у меня что-то не получается.
Все это происходит при выдаче роли через плюсик в самом дискорде. Вот часть этого кода, однако выводит ошибку:
line 111 ,'member_descriptor' object has no attribute 'role'

@client.event
async def on_member_update(before,after):
	member = discord.Member
	roles = discord.Role
	#spectator_role = member.guild.get_role(748241633669152878)
	#sp = member.guild.get_role(748241633669152878)
	if [i.id for i in before.roles].count(728009097169076334):
		if [i.id for i in after.roles].count(748241633669152878):
			for guild in client.guilds:
				channel = client.get_channel(724253008447143946)
				await channel.send('ошибка')
		                role = discord.utils.get(member.guild.role, name="✨Spectator™✨") #line 111
				await member.remove_roles(role)
			return

Как это можно реализовать?
  • Вопрос задан
  • 336 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Зачем вы сделали
member = discord.Member
?

Все роли человека лежат в
after.roles

Если вам нужно блокировать определенную роль, нужно сначала получить ее, затем через for просмотреть новый список ролей человек, и если среди них есть нужная вам - удалить ее
for role in after.roles:
    if role.mention == bad_role:
        await member.remove_roles(bad_role)


Работа с ролями - Как добавить пару функций в on_member_update?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы