@Dj3ck

Данные из кода Python не сохраняются в Sqlite3?

Код выполняется . ошибок в Терминале нет . Но данные которые он должен собирать не вносятся в БД .И он изначально не хотел создавать автоматически БД ,поэтому указал Путь к папке.

import discord
from discord.ext import commands
import sqlite3

bot = commands.Bot(command_prefix=settings['prefix'])

# Создаем таблицу, если ее нет
conn = sqlite3.connect(r'C:\Users\Djeck\Desktop\Bot\discord_users.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
             (id TEXT, name TEXT, is_active INTEGER, servers TEXT, discord_id TEXT)''')

@bot.command()
async def hello(ctx):
    author = ctx.message.author
    await ctx.send(f'доброе утро хозяин, {author.mention}!')

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')
    print(f'Pong! Latency: {round(bot.latency * 1000)}ms')
    await add_all_users()

async def add_all_users():
    await bot.wait_until_ready()
    members = [m for g in bot.guilds for m in g.members]
    for member in members:
        add_user(member.id)

    conn.commit()

def add_user(member_id):
    member = bot.get_user(member_id)
    if not isinstance(member, discord.Member):
        return

    # Получаем информацию о пользователе
    name = member.display_name
    is_active = 1 if member.status == discord.Status.online else 0
    servers = [str(guild.id) for guild in bot.guilds if member in guild.members]
    discord_id = member.id

    try:
        # Проверяем, есть ли пользователь с таким же ID в базе данных
        c.execute('SELECT * FROM users WHERE id = ?', (member_id,))
        user = c.fetchone()
        if user:
            # Обновляем информацию о пользователе
            c.execute('''UPDATE users SET 
                         name = ?, 
                         is_active = ?, 
                         servers = ?, 
                         discord_id = ?
                         WHERE id = ?''',
                      (name, is_active, str(servers), discord_id, member_id))
        else:
            # Добавляем нового пользователя в базу данных
            c.execute('INSERT INTO users VALUES (?, ?, ?, ?, ?)',
                      (member_id, name, is_active, str(servers), discord_id))

    except sqlite3.Error as e:
        print(f'Ошибка при работе с базой данных: {e}')

if __name__ == '__main__':
    bot.run(settings['token'])
    conn.close()
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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