Python | Как очистить лист от ботов? [discord.py]
Проблема в том, что боты из листа не очищаются.
Код:
@bot.command()
async def random(ctx, amount: int):
await ctx.send("Ребята, которых выбрал бот:")
winnerslist = []
num = 0
for i in range(amount):
winmember = ctx.guild.members
winmember.pop(winmember.index(bot.user))
winners = rrandom.choice(winmember)
role1 = ctx.guild.get_role(850398755017588797)
if role1 in winners.roles:
pass
else:
num += 1
role = ctx.guild.get_role(850398755017588797)
await winners.add_roles(role)
winnerslist.append(str(num) + ". " + winners)
await ctx.send('\n'.join(str(x) for x in winnerslist))
Исход:

P.S Не хочется прописывать ещё 1 if потому, что теряется кол-во пользователей в исходе
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
В любом случае нужно заранее сделать проверку, еще перед формированием списка пользователей.
Создавая winmember, нужно не присвоить список всех пользователей, а отсортировать, чтобы там не было ботов. Это можно сделать через проверку условия member.bot == False или not member.bot.
Заменяем эту строку
winmember = ctx.guild.members
На эту
winmember = [member for member in ctx.guild.members if member.bot == False]
Эта строка больше не нужна, так как ботов в списке уже в принципе нет. Все, что она делала - удаляла из списка только вашего бота.
winmember.pop(winmember.index(bot.user))