Как вывести данные из БД помощью дискорд бота?

Данной командой пользователь может сохранить данные о себе в БД.

@slash.subcommand(base='note', name='add', description='Adds a user id with a note to the database.', guild_ids=guild_ids)
async def add(ctx, user_id: str, user_name: str, note: str, friend_code: str, sex: str):
    database = sqlite3.connect('user_notes.db')
    c = database.cursor()
    c.execute(f"INSERT INTO user_notes VALUES ('{user_id}', '{user_name}', '{note}', '{friend_code}', '{sex}')")
    database.commit()
    database.close()
    await ctx.send('User and note successfully added!', hidden=True)

как сделать команду, которая будет выводить данные пользователя по его ID?

Например

/note show @user1


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

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

Может ты создашь отдельную функцию сохранения пользователя в бд? Например, когда чел заходит в дискорд-гильдию, бот тут же добавляет его в бд. Это проще будет, ибо каждый раз чел должен писать

/note show @user1

→ Ссылка
Автор решения: v4yve
connection = sqlite3.connect('user_notes.db')
cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS user_notes (
    user_id INT,
    user_name TEXT,
    note TEXT,
    friend_code INT,
    sex TEXT
)""")
for guild in self.client.guilds:
    for member in guild.members:
        if cursor.execute(f"SELECT id FROM user_notes WHERE id = {member.id}").fetchone() is None:
            cursor.execute(f"INSERT INTO users VALUES ('{user_id}', '{user_name}', '{note}', '{friend_code}', '{sex}')")
            connection.commit()
        else:
            pass
connection.commit()
→ Ссылка