# обрати внимание, вот как правильно вставлять параметры в запрос
data = cursor.execute("SELECT cost FROM shop WHERE id = ?", (role.id, )).fetchall()
if not data:
#сообщаем что такая роль не продаётся
return
cost = data[0][0] #роль есть, вот её цена
if role in ctx.member.roles:
# сообщаем, что роль уже есть
return
# обрати внимание, вот как правильно вставлять параметры в запрос
data = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.member.id, )).fetchall()
if not data:
#сообщаем что такого пользователя нет
return
cash = data[0][0] #пользователь есть, вот его деньги
if cost > cash:
# сообщаем, что денег мало
return
# обрати внимание, вот как правильно вставлять параметры в запрос
cursor.execute("UPDATE users SET cash = cash - ? WHERE id = ?", (cost, ctx.member.id))
# и выдаём роль
CREATE TABLE IF NOT EXISTS users(
name TEXT,
id BIGINT PRIMARY KEY,
cash BIGINT,
rep INT,
lvl INT
)
CREATE TABLE IF NOT EXISTS shop(
id BIGINT PRIMARY KEY,
cost BIGINT
)
CREATE TABLE Users (
id INT PRIMARY KEY,
cash FLOAT NOT NULL);
CREATE TABLE Shop (
role_id INT PRIMARY KEY,
price FLOAT NOT NULL);
CREATE TABLE Purchases(
user INT NOT NULL,
role INT NOT NULL,
FOREIGN KEY (user) REFERENCES (Users.id),
FOREIGN KEY (role) REFERENCES (Roles.id),
PRIMARY KEY (user, role)
);
plt.plot(x, y, marker='o')
import sqlite3
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute('Create Table users (id INT, name TEXT)')
print(cur.execute('select * from users').fetchall()) # []
cur.execute('insert into users (id, name) values (?, ?)', (1, 'Foo'))
print(cur.execute('select * from users').fetchall()) # [(1, 'Foo')]
cur.execute('insert into users (id, name) values (?, ?)', (1, 'Foo'))
print(cur.execute('select * from users').fetchall()) # [(1, 'Foo'), (1, 'Foo')]
class MyHandlers:
def __init__(self, bot):
self.bot = bot
# подписываем обработчики событий
bot.message_handler(commands=['start']) (self._handle_start)
def _handle_start(self, message):
# тут обработчик команды
self.bot.send_message(...)
def callable_method(self):
pass # а этот метод не подписан, но его можно вызывать снаружи.
from my_module import MyHandlers
handlers1 = MyHandlers(bot)
# ................... уже потом
handlers1.callable_method()
Преобразователь discord.Role принимает пинг, имя роли или discord id роли.