Запись текста от пользователя в переменную
попытался написать бота сам, но не получилось следующее:
не смог сделать запись д/з, которое присылает пользователь в переменную и отправку д/з по запросу
не смог разделить получение и отправку д/з ботом, сделал через elif
сам бот https://github.com/Alchel007/h-w-bot/blob/main/MAIN!!!.py
бот написан на telebot
заранее благодарю
получение д/з
elif message.text == 'Алг. Профиль':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('? Главное меню')
markup.add(btn1)
bot.send_message(message.chat.id, 'Отправьте д/з в формате текста')
отправка д/з
elif message.text == 'Алг. Профиль.':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('? Главное меню')
markup.add(btn1)
bot.send_message(message.from_user.id,
'Д/З:',
reply_markup=markup, parse_mode='Markdown')
Ответы (2 шт):
В библиотеке Telebot существует прекрасная функция:
.register_next_step_handler
Нужна она для получения значения от пользователя и ее последовательной передачи в функцию
В твоем случае нужно:
bot.register_next_step_handler(message, и во втором параметре передай имя нужной функции)
Готовый код:
elif message.text == 'Алг. Профиль':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('? Главное меню')
markup.add(btn1)
bot.send_message(message.chat.id, 'Отправьте д/з в формате текста')
bot.register_next_step_handler(message, gowritedz)
def gowritedz(message):
with open('dzalgebra.txt', 'a') as file:
file.write(f'{message.text}\n')
Тут в коде получается текст от пользователя и записывается в .txt файл. Далее в нужной функции просто считываешь текст из файла и выводишь пользователю. Всё.
решил проблему изучив sqlite3
def dz_add(dz, lesson):
chat_id = dz.chat.id
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Расписание")
btn2 = types.KeyboardButton('Д/З')
markup.add(btn1, btn2)
if dz.text == '? Главное меню':
bot.send_message(chat_id, "выберите раздел", reply_markup=markup)
else:
dz_add_bd(dz=dz.text, lesson=lesson)
bot.send_message(chat_id, "Д/з добавлено", )
bot.send_message(chat_id, "выберите раздел", reply_markup=markup)
def dz_add_bd(dz, lesson):
conn = sqlite3.connect(database="db.sqlite")
cur = conn.cursor()
try:
cur.execute("""
create table dz_table
(
id INTEGER not null
constraint dz_table_pk
primary key,
name_lesson varchar,
dz TEXT
);
""")
conn.commit()
except:
pass
if cur.execute(f"select dz from dz_table where name_lesson = '{lesson}'").fetchone():
cur.execute(f"update dz_table set dz = '{dz}' where name_lesson = '{lesson}' ")
else:
cur.execute((f'INSERT INTO dz_table (name_lesson, dz) VALUES ("{lesson}", "{dz}")'))
conn.commit()
def dz_get(lesson):
conn = sqlite3.connect(database="db.sqlite")
cur = conn.cursor()
less = lesson[0:-1]
dz = cur.execute(f"select dz from dz_table where name_lesson = '{less}'").fetchone()
if dz is None:
return "Домашнего задания не задано"
else:
return dz[0]