@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()
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Вам не дадут всех участников всех серверов. А если вы расчитываете когда-то получить верификацию, учитывайте что вам могут вообще не дать смотреть участников.
650aa23f17855437585678.png
  1. Никогда не пишите в БД в on_ready. Вы миллион раз будете запускать бота и он миллион раз будет писать миллион пользователей
  2. Не храните пустых пользователей. 99% участников серверов не воспользуются вашим ботом никогда, зачем вы их храните?
  3. Добавляйте запись когда в ней есть необходимость, используйте INSERT ... ON CONFLICT ... UPDATE
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 июн. 2024, в 02:23
5000 руб./за проект
26 июн. 2024, в 00:28
5000 руб./за проект
25 июн. 2024, в 23:31
1500 руб./за проект