Как заносить всех пользователей в базу данных? Заносится только бот. Discord.py и Sqlite3

Вот мой код:

import discord
from discord.ext import commands

import sqlite3
from config import settings

client = commands.Bot(command_prefix = settings['PREFIX'])
client.remove_command('help')

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

@client.event
async def on_ready():
    cursor.execute("""CREATE TABLE IF NOT EXISTS users (
        name TEXT, 
        id INT,
        cash BIGINT,
        rep INT,
        lvl INT
    )""")
    connection.commit()

    for guild in client.guilds:
        for member in guild.members:
            cursor.execute(f"SELECT id FROM users where id={member.id}")
            if cursor.fetchone() is None:
                cursor.execute(f"INSERT INTO users (name, id, cash, rep, lvl) VALUES ('{member}', {member.id}, 0, 0, 1)")
                connection.commit()
            else:
                pass

print('Бот готов к работе!')

Проблема заключается в том, что у меня в базу данных заносится только созданный бот. введите сюда описание изображения А другие участники не заносятся, хоть вроде должны. Помогите умоляю!!


Ответы (1 шт):

Автор решения: Dmig

Скорее всего у вас не включен Intent на members, вот тут указан список вещей, которые бот не может без него получить и сохранить в кеш, а далее в базу данных (включает в себя guild.members: https://discordpy.readthedocs.io/en/stable/api.html#discord.Intents.members

Здесь в целом, про Intent'ы: https://discordpy.readthedocs.io/en/stable/intents.html

Решение - при создании бота передать в него список Intent'ов:

intents = discord.Intents.default()
intents.members = True

client = commands.Bot(command_prefix = settings['PREFIX'], intents=intents)
→ Ссылка