Как вывести данные из БД помощью дискорд бота?
Данной командой пользователь может сохранить данные о себе в БД.
@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()