Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста, с телеграмм-ботом

Александр Корольков Ученик (166), закрыт 6 дней назад
 from choosing_tariff import tariffs 

class FreedomBot:
def __init__(self, token):
self.token = token
self.bot = telebot.TeleBot(self.token)

def start_bot(self):
@self.bot.message_handler(commands=["start"])
def start(message):
markup = types.InlineKeyboardMarkup(row_width=2)
item0 = types.InlineKeyboardButton('Тарифы', callback_data='tariffs')
item1 = types.InlineKeyboardButton('Офисы', callback_data='question_2')
item2 = types.InlineKeyboardButton('Подключить', callback_data='question_3')
item3 = types.InlineKeyboardButton('Помощь', callback_data='question_4')
markup.add(item0, item1, item2, item3)
self.bot.send_message(message.chat.id, text="__________Меню__________", reply_markup=markup)



@self.bot.callback_query_handler(func=lambda call: True)
def callback(call):
# Кнопка Тарифы вызывает функцию tariffs()
if call.data == 'tariffs':
tariffs(message)

self.bot.polling()


Второй код название файла choosing_tariff

import telebot
from telebot import types

token = ""6817083843:dAAFL_mv9OuckddiGvmZ-mDjD387SxNseKpSJFC568"
bot = telebot.TeleBot(token)
chat_id = 6378638647


def tariffs(message):
markup = types.InlineKeyboardMarkup(row_width=2)
tariff0 = types.InlineKeyboardButton(text='Многоквартирный', callback_data='apartment_building')
tariff1 = types.InlineKeyboardButton(text='Частный', callback_data='private')
markup.add(tariff0, tariff1)
bot.send_message(message.chat.id, text="Выберите тип дома", reply_markup=markup)
bot.register_next_step_handler(message, television)



def television(message):
markup = types.InlineKeyboardMarkup(row_width=3)
tariff0 = types.InlineKeyboardButton(text='Интернет + ТВ', callback_data='internet_+_TV')
tariff1 = types.InlineKeyboardButton(text='Интернет', callback_data='internet')
markup.add(tariff0, tariff1)
bot.send_message(message.chat.id, text="Выберите тариф", reply_markup=markup)


Надо чтобы когда в первом файле была нажата кнопка 'Тарифы', то из файла choosing_tariff должна сработать сначала функции tariffs а потом television но работает только функция tariffs а television нет
Лучший ответ
スネーク フリーフライト Ученик (211) 1 неделю назад
Попробуй поменять их местами, в смысле сначала television, а потом tariffs и тогда в tariffs можно будет вызвать television командой television(message)
Александр КорольковУченик (166) 1 неделю назад
не получилось
スネーク フリーフライトУченик (211) 1 неделю назад
Плохо, щас поищу
スネーク フリーフライトУченик (211) 1 неделю назад
choosing_tariff.py
FreedomBot.py

Переходи по ссылке скачивай код. Проблема была в том, что ты передавал не call в choosing_tariff.py, а message из-за этого tariffs срабатывал, а television нет.
Остальные ответы
Денис Да Ученик (97) 1 неделю назад
import telebot
from telebot import types
from choosing_tariff import tariffs

class FreedomBot:
def __init__(self, token):
self.token = token
self.bot = telebot.TeleBot(self.token)
self.register_handlers()

def register_handlers(self):
@ self.bot .message_handler(commands=["start"])
def start(message):
markup = types.InlineKeyboardMarkup(row_width=2)
item0 = types.InlineKeyboardButton('Тарифы', callback_data='tariffs')
item1 = types.InlineKeyboardButton('Офисы', callback_data='question_2')
item2 = types.InlineKeyboardButton('Подключить', callback_data='question_3')
item3 = types.InlineKeyboardButton('Помощь', callback_data='question_4')
markup.add(item0, item1, item2, item3)
self.bot .send_message(message.chat.id, text="__________Меню__________", reply_markup=markup)

@ self.bot .callback_query_handler(func=lambda call: True)
def callback(call):
if call.data == 'tariffs':
tariffs( self.bot , call.message)

def start_bot(self):
self.bot .polling()

# Инициализация и запуск бота
if __name__ == "__main__":
token = "YOUR_BOT_TOKEN_HERE"
bot = FreedomBot(token)
bot.start_bot()
Александр КорольковУченик (166) 1 неделю назад
Оно не будет работать
Похожие вопросы