Этот вопрос закрыт для ответов, так как повторяет вопрос Обработка нажатия кнопки в телеграмм боте?
@NoName45342
Начинающий программист)

Обработка нажатия инлайновой кнопки Telegram-бота?

Всем привет. Я новичок на этом портале да и в Python тоже, заранее простите, если плохо описал проблему или написал кривой код.
Пишу код для телеграмм бота. Задача бота считывать строки из текстового файла и после определенных строк вставлять инлайновую клавиатуру. При нажатии одной из кнопок он должен продолжать отправлять сообщения до определенной строки. Проблема в том, что я не понимаю как проверить нажатие на клавишу и продолжить отправлять строки из файла.
import telebot
import config
import scenario
from time import sleep as sl
from telebot import	types

bot  = telebot.TeleBot(config.token)



@bot.message_handler(commands = ['start'])
def vstuplenie(message):
	f = list(open ('Name_file.txt', encoding = 'Windows-1251'))
	bot.send_message(message.chat.id, scenario.nachalo )
	sl(1)
	
	for i, line in enumerate(f):
		if i < 5:
			bot.send_message(message.chat.id, line )
			sl(3)

	
	markup = types.InlineKeyboardMarkup(row_width = 1)
	item1 = types.InlineKeyboardButton("Бла-бла-бла", callback_data= "answer1")
	item2 = types.InlineKeyboardButton("Бла-бла-бла", callback_data= "answer2")

	markup.add(item1, item2)

	bot.send_message(message.chat.id, "Бла-бла-бла", reply_markup=markup)
	sl(3)

	'''На этом месте проблема. Без проверки нажатия кнопки он просто продолжает отправлять текст не дожидаясь
	клика'''
	if :
		for i, line in enumerate(f):
			if i > 4:
				bot.send_message(message.chat.id, line )
				sl(3)



@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
	try:
		if call.message:
			if call.data == "answer1":
				bot.send_message(call.message.chat.id, "Бла-бла-бла")
			elif call.data == "answer2":
				bot.send_message(call.message.chat.id, "Бла-бла-бла")
			
			
			bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Бла-бла-бла" ,
                reply_markup=None) 

	
	except Exception as e:
			print(repr(e))


if __name__ == '__main__':
	bot.polling(none_stop = True)
  • Вопрос задан
  • 1835 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
На этом месте проблема. Без проверки нажатия кнопки он просто продолжает отправлять текст не дожидаясь клика

Он и не будет ничего ждать. Помещайте этот кусок кода с отправкой оставшихся строк в обработчик callback_inline. Либо под if call.data == "answer1":, либо в elif call.data == "answer2":. А может и вообще после всех условий
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
18 мая 2024, в 22:58
3000 руб./за проект
18 мая 2024, в 21:07
5000 руб./за проект
18 мая 2024, в 20:58
5000 руб./за проект