Задать вопрос

Почему бот отправляет результат действия мне, а не юзеру?

Добрый день, проблема в том, что при использовании бота мной, все работает верно, но когда его пытаются использовать другие он отвечает им на все команды, но результат вычисления отправляет почему то мне, в чем дело?
@bot.message_handler(commands=['spam'])
def start_message(message):
    bot.send_message(message.chat.id, 'Пиши что угодно')
    @bot.message_handler(content_types=['text'])
    def get_text(message):
        text = message.text
        markup = telebot.types.InlineKeyboardMarkup()
        markup.add(telebot.types.InlineKeyboardButton(text='Десять', callback_data=10))
        markup.add(telebot.types.InlineKeyboardButton(text='Пятьдесят', callback_data=50))
        markup.add(telebot.types.InlineKeyboardButton(text='Сто', callback_data=100))
        bot.send_message(message.chat.id, text="Выбери сколько раз повторить", reply_markup=markup)

        @bot.callback_query_handler(func=lambda call: True)
        def query_handler(call):
            bot.answer_callback_query(callback_query_id=call.id, text='11111')
            so = []
            bot.send_message(message.chat.id, f'Пишем {call.data} раз')
            for i in range(int(call.data)):
                so.append(text)
                sos = '\n'.join(so)
            bot.send_message(message.chat.id, sos)

Понимаю, что вопрос легкий и ошибка, вероятно в том, что я где то не указал путь отправки, но я в упор не вижу ее(
  • Вопрос задан
  • 268 просмотров
Подписаться 2 Простой 3 комментария
Решения вопроса 1
@twistfire92
Python backend developer
Зачем вы сделали вложенную структуру функций? Они все должны быть на верхнем уровне

@bot.message_handler(commands=['spam'])
def start_message(message):
    bot.send_message(message.chat.id, 'Пиши что угодно')

@bot.message_handler(content_types=['text'])
def get_text(message):
    text = message.text
    markup = telebot.types.InlineKeyboardMarkup()
    markup.add(telebot.types.InlineKeyboardButton(text='Десять', callback_data=10))
    markup.add(telebot.types.InlineKeyboardButton(text='Пятьдесят', callback_data=50))
    markup.add(telebot.types.InlineKeyboardButton(text='Сто', callback_data=100))
    bot.send_message(message.chat.id, text="Выбери сколько раз повторить", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
    bot.answer_callback_query(callback_query_id=call.id, text='11111')
    so = []
    bot.send_message(message.chat.id, f'Пишем {call.data} раз')
    for i in range(int(call.data)):
        so.append(text)
        sos = '\n'.join(so)
    bot.send_message(call.message.chat.id, sos)


И да, в последней строке обращаться к объекту message напрямую нельзя, через call только
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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