@bot.message_handler(content_types=['text'])
стоит выше обработчика команды @bot.message_handler(commands=['profile'])
.@bot.message_handler(content_types=['text'])
def get_text_messages(message):
handle_profile_command
.__init__
и всёimport sqlite3
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
with self.connection:
self.cursor.execute('''
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY NOT NULL,
user_id INTEGER NOT NULL,
nickname TEXT (60),
time_sub NOT NULL DEFAULT (0),
signup TEXT DEFAULT setnickname
);
''')
def add_user(self, id):
with self.connection:
self.cursor.execute("INSERT INTO `Users` (`id`) VALUES (?)", (id,))
return self.cursor.execute
def user_exists(self, id):
with self.connection:
result = self.cursor.execute("SELECT * FROM `Users` WHERE `id` = ?", (id,)).fetchall()
return bool(len(result))
add_user
т.к. он принимает только один параметр - ID, а у вас 3 NOT NULL параметра teacher_id
нужно запоминать на моменте edit_teacher_handler
, так же сохранив его в FSM. Получаем идентификатор преподавателя из message.textв message.text ведь лежит номер класса. К тому же наверное в БД ID является числом, а не строкой. Пробовали смотреть какие данные приходят в
update_teacher
? ?
, как написано в докеdef is_number(_str):
try:
int(_str)
return True
except ValueError:
return False
nomer = str(message.text)
Столбец user_name есть, но не работает
cursor.execute('UPDATE lun_db SET user_name = ? WHERE user_id = ?', (username, userid))
то выводит все строки, но последняя строка None
print(get_all())
что лиdef get_all():
records = []
cur.execute('SELECT * FROM stocks')
rows = cur.fetchall()
for row in rows:
records.append({'name': str(row[1]), 'id': str(row[0])})
return records