Нужно сделать delay между сообщениями, и поменять немного код

kkgod

Новичок
Пользователь
Окт 7, 2020
21
1
3
Код:
import telebot
import os
from random import *
from decimal import Decimal

myBot = telebot.TeleBot('1418080647:AAGvspahgeKDFgSSA5nCEw9j73NCzmEsNyM')

@myBot.message_handler(commands=['start','start_1'])
def get_command(message):
    if message.text == '/start':
        myBot.send_message(message.chat.id, "Тебя приветствует бот - CoffeMuch, который поможет тебе рассчитать твою сутучную норму коффеина.")
        get_mes(message)

@myBot.message_handler(content_types=["text"])
def get_mes(message):
    myBot.send_message(message.chat.id, f'Ваш обьём чашки:')
    if message.text == "400":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 400")
        myBot.register_next_step_handler(msg, second_mes(message))
        obem = 400
        pass
    if message.text == "200":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 200")
        myBot.register_next_step_handler(msg, second_mes(message))
        obem = 200
        pass

def second_mes(message):
    myBot.send_message(message.chat.id, f'Ваше количество чашек в сутки:')
    if message.text == "1":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 1")
        myBot.register_next_step_handler(msg, second_mes(message))
        obem = 1
        pass
    elif message.text == '2':
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 2")
        myBot.register_next_step_handler(msg, second_mes(message))
        obem = 2
        pass


myBot.polling()


Traceback (most recent call last):
File "F:/py/venv/tg_beats_cg.py", line 42, in <module>
myBot.polling()
File "F:\py\venv\lib\site-packages\telebot\__init__.py", line 455, in polling
self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout)
File "F:\py\venv\lib\site-packages\telebot\__init__.py", line 513, in __threaded_polling
raise e
File "F:\py\venv\lib\site-packages\telebot\__init__.py", line 479, in __threaded_polling
self.worker_pool.raise_exceptions()
File "F:\py\venv\lib\site-packages\telebot\util.py", line 118, in raise_exceptions
raise self.exception_info
File "F:\py\venv\lib\site-packages\telebot\util.py", line 69, in run
task(*args, **kwargs)
TypeError: 'NoneType' object is not callable

Process finished with exit code 1

нужно фиксануть эту ошибку, и обьяснить как можно сделать delay между сообщениями, и обьяснить почему отправляется Ваш обьём чашки: повторно
 

Вложения

  • 8B6A9001-2397-4DE9-BA73-63D448D86945.png
    8B6A9001-2397-4DE9-BA73-63D448D86945.png
    234,9 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
не шарю в апи всяких ботов, но

почему отправляется Ваш обьём чашки: повторно
возможно
Python:
def get_mes(message):
    myBot.send_message(message.chat.id, f'Ваш обьём чашки:')
    if message.text == "400":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 400")
        ...
вот тут вы пишите вначале Ваш обьём чашки: потом еще раз Ваш обьём чашки = 400, вот эту строку myBot.send_message(message.chat.id, f'Ваш обьём чашки:') вынесите из функции get_mes и поместите в get_command, то есть вот так
Python:
@myBot.message_handler(commands=['start','start_1'])
def get_command(message):
    if message.text == '/start':
        myBot.send_message(message.chat.id, "Тебя приветствует бот - CoffeMuch, который поможет тебе рассчитать твою сутучную норму коффеина.")
        myBot.send_message(message.chat.id, f'Ваш обьём чашки:')
        get_mes(message)

@myBot.message_handler(content_types=["text"])
def get_mes(message):
    if message.text == "400":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 400")
        ...
и
как можно сделать delay между сообщениями
банально time.sleep() не пойдет?


остального не знаю...
 
Последнее редактирование:

kkgod

Новичок
Пользователь
Окт 7, 2020
21
1
3
не шарю в апи всяких ботов, но


возможно
Python:
def get_mes(message):
    myBot.send_message(message.chat.id, f'Ваш обьём чашки:')
    if message.text == "400":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 400")
        ...
вот тут вы пишите вначале Ваш обьём чашки: потом еще раз Ваш обьём чашки = 400, вот эту строку myBot.send_message(message.chat.id, f'Ваш обьём чашки:') вынесите из функции get_mes и поместите в get_command, то есть вот так
Python:
@myBot.message_handler(commands=['start','start_1'])
def get_command(message):
    if message.text == '/start':
        myBot.send_message(message.chat.id, "Тебя приветствует бот - CoffeMuch, который поможет тебе рассчитать твою сутучную норму коффеина.")
        myBot.send_message(message.chat.id, f'Ваш обьём чашки:')
        get_mes(message)

@myBot.message_handler(content_types=["text"])
def get_mes(message):
    if message.text == "400":
        msg = myBot.send_message(message.chat.id, "Ваш обьём чашки = 400")
        ...
и

банально time.sleep() не пойдет?


остального не знаю...
thx bro
 

Форум IT Специалистов