Код выполняется . ошибок в Терминале нет . Но данные которые он должен собирать не вносятся в БД .И он изначально не хотел создавать автоматически БД ,поэтому указал Путь к папке.
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()