Задать вопрос
AnSmirnykh
@AnSmirnykh
Изучаю Python, C++ и ML/DL.

Как сохранить любую текстовую информацию от пользователя бота в переменную в библиотеке Telebot?

Перед вопросом я просмотрел все что смог найти в интернете по этому вопросу, но ничего мне конкретно не помогло.
Я не могу найти инфу как через библиотеку Telebot для Python сделать так, чтобы бот запоминал ввод от пользователя.

К примеру, на классическом Python мы спокойно можем сделать так:

tasks = {
}
command = input('введите команду: ')
if command == 'add':
    date = input('введите дату для задачи: ')
    task = input('введите название задачи: ')

def add_todo(date, task):
    if date in tasks:
         tasks[date].append(task)
    else:
        tasks[date] = []
        tasks[date].append(task)
    print('Задача', task, 'добавлена на дату', date)


То есть любой ввод сохраняем в переменную и через простейшую функцию сохраняем это все в словаре.

А как также сделать через библиотеку telebot? Чтобы запомнить любой ввод от человека, в том же словаре к примеру и чтобы потом это можно было вывести по его запросу.
К примеру, вот я задаю юзеру вопрос при вводе команды - add:

@bot.message_handler(commands=['add'])
def add(message):
    bot.send_message(message.chat.id, 'Введите дату для задачи в формате "4 мая"')


- и как мне вот запомнить текст к примеру то же "4 мая" в переменной, чтобы потом я мог вызвать дату + задачу на эту дату?
  • Вопрос задан
  • 2574 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@webdiez
Меня все знают как WebDiez.
Так получилось что каждый запрос пользователя = новый запуск скрипта.
Телеграм бот не хранит никакие данные.

Советую использовать sqlite, я в нее записываю даже название меню куда провалился пользователь.

import telebot
import sqlite3
import config
import os, sys

app_dir = sys.path[0] or os.path.dirname(os.path.realpath(sys.argv[0])) or os.getcwd() #Использую для поиска файла в родительском каталоге (помогает при запуске через службу)
conn = sqlite3.connect((os.path.join(app_dir, config.base)), check_same_thread=False)
cursor = conn.cursor()

#Записываем данные пользователя
us_id = message.from_user.id
us_name = message.from_user.first_name
us_sname = message.from_user.last_name
username = message.from_user.
cursor.execute('INSERT INTO users (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)' (us_id, us_name, us_sname, username))
conn.commit()


user_id сделай уникальным в базу чтоб не было дублекатов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы