mohovoy
@mohovoy
Практикуюсь в создании сайтов и ботов для дискорда

Как добавить всех участников сервера в БД?

Всем привет! Пишу своего маленького экономического бота для своего сервера.
Кусочек кода
import sqlite3
from discord.ext import commands
from config import settings

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

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,
        money BIGINT,
        rep INT,
        lvl INT
    )""")

    for guild in client.guilds:
        for member in guild.members:
            if cursor.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None:
                cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 0, 0, 1)")
            else:
                pass
    
    connection.commit()
    print(f'{client.user} - бот успешно запущен')
  
client.run(settings['TOKEN'])

Если участника нету в БД, то при запуске бота, он должен его добавить, но бот добавляет только самого себя, хотя на сервере 5 человек
60ec99f532956579895374.png

В чем может быть ошибка? Весь код просмотрел, не нашел ошибку. Бот, если что, к серверу подключен
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега Discord
Javascript-разработчик
откройте портал разработчиков => выберите ваше приложение => зайдите во вкладку Bot => пролистайте ниже, до Privileged Gateway Intents
=> включите пункты PRESENCE INTENT и SERVER MEMBERS INTENT => нажмите Save Changes и перезапустите вашего бота.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
VALUES ('{member}', {member.id},

по структуре базы у вас первое поля строковое для имени. а суете туда объект
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы