@mishkafrede2004

Guild.members не возвращает список всех участников сервера. Что делать?

при старте бота через соответствующий ивент on_ready пытаюсь получить список всех серверов, в которых состоит бот и получить всех участников со всех серверов для того, чтобы записать их в базу данных ( бот на три сервера ). Собственно в чем проблема. Циклы постоянно возвращает абсолютно разные значения.

1 случай:
Pain(
[<Guild id=851881961298722897 name='Pain(' shard_id=0 chunked=True member_count=10>, <Guild id=1077220696482140221 name=' ' shard_id=0 chunked=True member_count=96>]
Neka#0774
>

2 случай:
Pain(
[<Guild id=851881961298722897 name='Pain(' shard_id=0 chunked=True member_count=10>, <Guild id=1077220696482140221 name=' ' shard_id=0 chunked=True member_count=96>]
Vexera#8487


Очень редко он начинает записывать около 10 участников, а дальше все, ничего не происходит. На серверах суммарно около 150 участников.

Код прилагается:
intents = discord.Intents.all() 
intents.members = True

bot = discord.Bot(intents = intents)

@bot.event
async def on_ready():
    print(f"Bot is online now. Logged as {bot.user}") 
    
    for guild in bot.guilds: 
        print(guild)
        print(bot.guilds)
        for member in guild.members: 
            print(member)
            cur.execute(f"""SELECT userId FROM users WHERE userId = {member.id}""")
            if cur.fetchone() == None: 
                cur.execute(f"""
                            INSERT INTO users VALUES (?,?,?,?,?)
                        """, (member.name, member.id, member.mention, 0, 250))
            else:
                return
            db.commit()
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Вам не дадут всех участников всех серверов. А если вы расчитываете когда-то получить верификацию, учитывайте что вам могут вообще не дать смотреть участников.
650aa23f17855437585678.png
  1. Никогда не пишите в БД в on_ready. Вы миллион раз будете запускать бота и он миллион раз будет писать миллион пользователей
  2. Не храните пустых пользователей. 99% участников серверов не воспользуются вашим ботом никогда, зачем вы их храните?
  3. Добавляйте запись когда в ней есть необходимость, используйте INSERT ... ON CONFLICT ... UPDATE
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы