@Artemka324234

Он не хочет заполнять пользователей, и я не знаю как сделать что бы заполняло почему ошибка?

Он не хочет заполнять пользователей, и я не знаю как сделать что бы заполняло почему ошибка?

import psycopg
from disnake.ext import commands
import disnake
from config import settings

# Creating bot prefix

bot = commands.Bot(command_prefix = settings['prefix'], intents = disnake.Intents.all())  # guild IDs

# Connect to an existing database
conn = psycopg.connect("ДАННЫЕ ОТ БД")
cur = conn.cursor()


cur.execute("""CREATE TABLE IF NOT EXISTS users (
id INT,
cash BIGINT,
rep INT,
lvl INT,
server_id INT,
warn INT
)""")


for guild in bot.guilds:
    for member in guild.members:
        if member.bot:
            continue # Если участник является ботом - пропускаем эту итерацию. Дальше код не выполняется
        if cur.execute("SELECT id FROM VirenUsers WHERE id = ?", (member.id, )).fetchone() is None:
            cur.execute("INSERT INTO VirenUsers VALUES (?, ?, ?, ?, ?, ?)", ( member.id, 0, 0, 1, guild.id, 0))

conn.commit()



@bot.command()
async def balance(ctx, member: disnake.Member = None):
    if not member:
        member = ctx.author
    cur.execute("SELECT cash, rep FROM users WHERE id = ?", [member.id])
    user = cur.fetchone()
    balance = disnake.Embed(
        title = f"""Баланс участника - {member.name}""", 
        description = f"""\n• Монеты: {user[0]} :moneybag:\n• Репутация: {user[1]} :sunglasses: """
    )
    balance.set_footer(
        text = f'Запросил: {ctx.author}', 
        icon_url = ctx.author.display_avatar.url
    )
    balance.set_thumbnail(url=member.display_avatar.url)
    await ctx.send(embed=balance)

bot.run(settings['token'])
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
А с какого перепугу он должен заполнять пользователей, если на момент цикла
for guild in bot.guilds:
    for member in guild.members:

бот ещё не подключён к сети?
Почитай про событие on_ready, там прямо написано:
Called when the client is done preparing the data received from Discord. Usually after login is successful and the Client.guilds and co. are filled up.

Т.е. только после этого события имеет смысл обращаться к списку гильдий бота.э
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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