@kutu33ov

Как сделать выдачу роли в on_message?

Хочу сделать мини диалог, чтобы после указания возраста бот давал роль.
Код:
@client.event
async def on_message(message):


	hello = ['привет', 'добрый вечер']
	verify_context = ['да','da', 'yes', 'я тут', 'ок','хорошо']
	channels = ['verify_test']
	verify_command = ['no have commands yet']

	if str(message.channel) in channels:

		if message.author == client.user:
			return

		msg = message.content.lower()
		if any(word in msg for word in hello):
			await message.channel.send('Привет!')

		
		if any(word in msg for word in verify_context):
			await message.channel.send('Сколько Вам лет?\n`отвечайте цифрой пожалуйста`')

			age_min = 14
			age_max = 50

			msg = await client.wait_for('message', check=check)
			attempt = int(msg.content)

			if attempt < age_min:
				await message.channel.send('none, sorry, 14+')

			elif attempt > age_min and attempt < age_max:
				await message.channel.send('yeaaaah, come on!!!')

				role_verify = get(member.guild.roles, name='Новичок')
				await member.add_roles(role_verify)

			
			else:
				await message.channel.send('Бип-буп...? :(')


Ошибка:
Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\volva\Desktop\ChatBotTest\bot.py", line 118, in on_message
    role_verify = get(member.guild.roles, name='Новичок')
NameError: name 'get' is not defined


Я понимаю, что ошибка в том, что я не так использую get в on_message. Но не могу понять как это исправить.
Так же, если можно упростить код - буду очень благодарен.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
@kutu33ov Автор вопроса
Разобрался, я использовал member в on_message и это была основная ошибка. Если кто-то столкнётся с проблемой вот момент с выдачей роли:
role_verify = discord.utils.get(message.guild.roles, name = 'Новичок')
await message.author.add_roles(role_verify)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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