Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2016 00:37:38

ArthurMelkumov
Зарегистрирован: 2016-08-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Телеграм-бот на Python

Здравствуйте. Я пытаюсь написать своего телеграм-бота на 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)

Офлайн

#2 Авг. 2, 2016 07:41:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Телеграм-бот на Python

Код на форуме принято вставлять в виде текста в тегах код см кнопку помеченную код <>. А у вас текст порезался.



Офлайн

#3 Авг. 2, 2016 11:58:17

ArthurMelkumov
Зарегистрирован: 2016-08-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Телеграм-бот на Python

А, сразу данную функцию не заметил, спасибо. Уже исправил)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version