@MrBrainop
Начал изучать html, Python и QT Designer

TelegramBOT сообщение с таймером?

Как через Telebot отправить сообщение в котором написано "Жди 15 сек" через секунду изменяется "Жди 14 сек". ИЗМЕНЯЕТСЯ а не удаляется.
Вот код который писал я:
bot.send_message(message.chat.id, 'Ждите... 15')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 14')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 13')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 12')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 11')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 10')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 9')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 8')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 7')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 6')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 5')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 4')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 3')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 2')
		time.sleep(1)
		bot.edit_message_text(message.chat.id, message.message_id, 'Ждите... 1')


Вот лог из консоли:
2020-08-24 20:57:15,502 (util.py:68 WorkerThread1) ERROR - TeleBot: "ApiException occurred, args=('A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:\n[b\'{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}\']',)
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\util.py", line 62, in run
    task(*args, **kwargs)
  File "C:\Users\User\Desktop\blocked.py", line 52, in dadas
    bot.edit_message_text(message.message_id, 'Ждите... 14')
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\__init__.py", line 1185, in edit_message_text
    disable_web_page_preview, reply_markup)
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 772, in edit_message_text
    return _make_request(token, method_url, params=payload, method='post')
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 69, in _make_request
    return _check_result(method_name, result)['result']
  File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\apihelper.py", line 88, in _check_result
    raise ApiException(msg, method_name, result)
telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}']
"
2020-08-24 20:57:15,506 (__init__.py:455 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}']"
  • Вопрос задан
  • 3522 просмотра
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Прочитайте, какие параметры принимает функция.
Посмотрите, какие параметры предлагает IDE для функции

Она принимает текст, ID чата, ID сообщения.
def edit_message_text(self, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None, disable_web_page_preview=None, reply_markup=None)


Вы передаете ID чата, ID сообщения, текст
https://github.com/eternnoir/pyTelegramBotAPI/blob...

Ну и реализация, конечно, тоже странная. Чем вам циклы не угодили
for x in range(1, 16):
    bot.edit_message_text('Ждите {} сек'.format(x), message.chat.id, message.message_id)
    time.sleep(1)
Ответ написан
shabelski89
@shabelski89
engineer
Ключевой момент, надо знать ID сообщения чтобы его редактировать!
Для этого записывааем его ID в переменную и дальше по нему редактируем сообщение.
Полностью рабочий пример ниже, для запуска пишем /start боту :)

# -*- coding: utf-8 -*-
import telebot
from time import sleep

bot = telebot.TeleBot(token)


@bot.message_handler(commands=['start'])
def send_notification(message):
    msg = bot.send_message(chat_id=message.chat.id, text='START')
    sleep(1)
    msg_id = msg.message_id
    time_s = 15
    for t in range(time_s, 0, -1):
        bot.edit_message_text(chat_id=message.chat.id,  message_id=msg_id, text=f'Wait...{t}  секунд')
        sleep(1)
    bot.edit_message_text(chat_id=message.chat.id, message_id=msg_id, text='END')


if __name__ == "__main__":
    try:
        bot.polling(none_stop=True)
    except Exception as e:
        print(e)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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