Форум сайта python.su
0
Здравствуйте. Я пытаюсь написать своего телеграм-бота на Python но возникли проблемы, а именно программу (бота) жутко “колбасит ” при отправки сообщения даты (которая выбирается из кастомной клавиатуры(см. гиф-анимацию)). Подскажите, как исправить данный “косяк”?) Вот код самого телеграм-бота и гиф-анимация:
""" Написание бота для Телеграм """ import telebot import constants import re bot = telebot.TeleBot(constants.token) print(bot.get_me()) import datetime now = datetime.date.today() check = datetime.timedelta(days=1) import time def log(message, answer): print( "\n ______________") from datetime import datetime print (datetime.now()) print("Сообщение от {0} {1}. (id={2}) \n Текст {3}". format(message.from_user.first_name, message.from_user.last_name, str(message.from_user.id), message.text)) print(answer) @bot.message_handler(commands=['start']) # стоки 26-27 декораторы, которые реагируют только на команду "старт" def handle_text(message): if 1: user_markup = telebot.types.ReplyKeyboardMarkup(True, True) user_markup.row("/start") bot.send_message(message.from_user.id, "Здравствуй, {0}!".format(message.from_user.first_name), reply_markup=user_markup) answer = "Здравствуй, {0}!".format(message.from_user.first_name) log(message, answer) user_markup = telebot.types.ReplyKeyboardMarkup(True, True) user_markup.row("Мужской", "Женский") user_markup.row("/start") bot.send_message(message.from_user.id, "Выберите пол персонажа", reply_markup=user_markup) answer = "Выберите пол персонажа" log(message, answer) @bot.message_handler(func=lambda message: message.text == 'Мужской') # строки 43-44 - декораторы, которые # реагируют,как я понял, только на определённое сообщение(например'Мужской') def handle_text(message): user_markup = telebot.types.ReplyKeyboardMarkup(True, True) user_markup.row(str(now), str(now + check), str(now + check * 2)) user_markup.row(str(now + check * 3), str(now + check * 4), str(now + check * 5)) user_markup.row(str(now + check * 6), str(now + check * 7), str(now + check * 8)) user_markup.row(str(now + check * 9), str(now + check * 10), str(now + check * 11)) user_markup.row(str(now + check * 12), str(now + check * 13), str(now + check * 14)) user_markup.row(str(now + check * 15), str(now + check * 16), str(now + check * 17)) user_markup.row(str(now + check * 18), str(now + check * 19), str(now + check * 20)) user_markup.row(str(now + check * 21), str(now + check * 22), str(now + check * 23)) user_markup.row(str(now + check * 24), str(now + check * 25), str(now + check * 26)) user_markup.row(str(now + check * 27), str(now + check * 28), str(now + check * 29)) user_markup.row("/start") bot.send_message(message.from_user.id, "Выберите дату рождения(год/месяц/число)", reply_markup=user_markup) answer = "Выберите дату рождения(год/месяц/число)" log(message, answer) l = (message.text) for val in l: @bot.message_handler(content_types=['text']) def sse(message): if re.match(r'[\b\b\b\b\w\b\b\w\b\b]', val) and len(message.text) == 10: g = str(message.text) file = open('TeleBot.txt', 'a') D = ["Дата рождения: " + g] answer = ("Дата рождения: " + g) log(message, answer) for index in D: file.write( '__________________________________________________________________ \n' + index + '\n') file.close() bot.send_message(message.from_user.id, 'Дату записал)') else: bot.send_message(message.from_user.id, 'Некоректный ввод1') val1=message.text if re.match(r'[\b\b\b\b\w\b\b\w\b\b]', val1): user_markup = telebot.types.ReplyKeyboardMarkup(True, True) user_markup.row("00:00", "01:00", "02:00") user_markup.row("03:00", "04:00", "05:00") user_markup.row("06:00", "07:00", "08:00") user_markup.row("09:00", "10:00", "11:00") user_markup.row("12:00", "13:00", "14:00") user_markup.row("15:00", "16:00", "17:00") user_markup.row("18:00", "19:00", "20:00") user_markup.row("21:00", "22:00", "23:00") user_markup.row("/start") bot.send_message(message.from_user.id, "Теперь выберите время встречи", reply_markup=user_markup) answer = ("Теперь выберите время встречи") log(message, answer) p = (message.text) for valu in p: if re.match(r'[\b\b\w\b\b]', valu): # and len(message.text) == 5: q = str(message.text) file = open('TeleBot.txt', 'a') C = ["Время встречи: " + q] answer = ("Время встречи: " + q) log(message, answer) for index in C: file.write( '__________________________________________________________________ \n' + index + '\n') file.close() bot.send_message(message.from_user.id, 'Время тоже записал)') else: bot.send_message(message.from_user.id, 'Некоректный ввод2') else: bot.send_message(message.from_user.id, 'Некоректный ввод3') else: bot.send_message(message.from_user.id, "Вы не имеете прав доступа к администраторскому разделу бота!") answer = "Вы не имеете прав доступа к администраторскому разделу бота!" log(message, answer) bot.polling(none_stop=True, interval=0)
Отредактировано ArthurMelkumov (Авг. 2, 2016 12:03:34)
Офлайн
253
Код на форуме принято вставлять в виде текста в тегах код см кнопку помеченную код <>. А у вас текст порезался.
Офлайн
0
А, сразу данную функцию не заметил, спасибо. Уже исправил)
Офлайн