@Rukopashka

Как сделать присваивание нового сообщения из бота telegram в python?

В переменной "s" должна хранится переменная тип str, пример 15:58, дальше она конвертируется в массив [15, 58]. после запроса "Вывести уведомление", переменная s берет это сообщение, а не принимает следующее сообщение. Это тестовый бот, на нем я проверяю новые функции для основного бота. Помогите, пожалуйста. Я уже везде полазил на сайтах, все перепробовал, но не получается
spoiler
import telebot
import datetime
from telebot import apihelper
import time

bot = telebot.TeleBot("1099338538:AAE4m6rR1ALipNa63FXeRNhpq**********")

hello_text = "Hello!!!"
integ = []
hour_today = []
minut_today = []
today = datetime.datetime.today()
hour_today.append(today.hour)
minut_today.append(today.minute)


@bot.message_handler(commands=['start'])
def fisrt_message(message):
    bot.send_message(message.chat.id, hello_text)

@bot.message_handler(content_types=['text'])
def handle_message(message):
    if (message.text == 'Вывести уведомление'):
        bot.send_message(message.chat.id, "Пример: 14:00")
        s = message.text
        bot.send_message(message.chat.id, s)
        l = len(s)
        i = 0
        while i < l:
            s1 = ''
            a = s[i]
        while '0' <= a <= '9':
            s1 += a
            i += 1
            if i < l:
                a = s[i]
            else:
                break
        i += 1
        if s1 != '':
            integ.append(int(s1))
        bot.send_message(message.chat.id, integ)

bot.polling()
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SODINNER
"переменная s берет это сообщение, а не принимает следующее сообщение"
Если тебе нужно сохранять и сообщение ранее и получать последующие данные от пользователя, создай функцию, на подобие first_message (БЕЗ ДЕКОРАТОРА), а после того как получаешь время 15:58, перенаправляешь на register_next_step_handler(new_function, message), тем самым передавая это же сообщение, как минимум это нужно чтобы получать message.chat.id, но если ты хочешь отфильтровывать сообщение именно на предыдущем этапе:
Делаешь проверку, а дальше if проверка прошла: перенаправляешь на следующую функцию, иначе пишешь что не верно сделали. Также рекомендую сделать еще один дополнительный параметр в новой функции, куда ты передашь уже конвертированное в список время, чтобы не пришлось конвертировать уже в новой функции, так код чище выглядеть будет.
Удачи =)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы