Задать вопрос
@Python_snake

Почему не работает разбан?

У меня не работает разбан после бана с ошибкой:

Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\core.py", line 190, in wrapped
ret = await coro(*args, **kwargs)
File "C:\Users\user\Desktop\RIMOбот\RIMO.py", line 152, in ban
await unban(member)
File "C:\Users\user\Desktop\RIMOбот\RIMO.py", line 117, in unban
for ban in users:
TypeError: 'async_generator' object is not iterable

код:
@client.command(pass_context=True)
@commands.has_permissions( administrator=True )

async def ban( ctx, member: discord.Member = None, time = None, *, reason: str = None ):


	async def unban(member):
		users = ctx.guild.bans()
		for ban in users:
			ban = ban.user
			await ctx.guild.unban(ban)

	if member:
		if time:
			time_letter = time[-1:] 
			time_numbers = int(time[:-1])

			def t(time_letter):
				if time_letter == 's':
					return 1
				if time_letter == 'm':
					return 60
				if time_letter == 'h':
					return 60*60
				if time_letter == 'd':
					return 60*60*24


			if reason:
				await member.ban(reason=reason)
				await ctx.send(embed=discord.Embed(description=f'Пользователь {member.mention} был забанен \nВремя: {time} \nПричина: {reason}'))

				await asyncio.sleep(time_numbers*t(time_letter))

				await unban(member)
				await ctx.send(embed=discord.Embed(description=f'Пользователь {member.mention} был разбанен'))

			else:
				await member.ban()
				await ctx.send(embed=discord.Embed(description=f'Пользователь {member.mention} был забанен \nВремя: {time}'))

				await asyncio.sleep(time_numbers*t(time_letter))

				await unban(member)
				await ctx.send(embed=discord.Embed(description=f'Пользователь {member.mention} был разбанен'))

		else:
			await member.ban()
			await ctx.send(embed=discord.Embed(description=f'Пользователь {member.mention} был забанен'))

	else:
		await ctx.send(embed=discord.Embed('Введите имя пользователя!'))
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
JustKappaMan
@JustKappaMan
Frontend, backend, desktop. Всего понемногу.
Предположу, что метод .bans() асинхронный. Следовательно нужно использовать async for вместо обычного.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 21:14
4000 руб./за проект