• Как отправить сообщение от имени юзера в другого бота?

    @SidVisceos
    1 бот не может писать ни от чьего имени, только от своего
    2 бот не может писать боту

    Вывод: вам нужно использовать юзерапи (те ещё танцы с бубном). Юзер пишет боту. Бот передает данные серверу. С сервера с помощью юзерапи от имени своего пользователя пишете боту.
    Иное невозможно
    Ответ написан
    Комментировать
  • Начинаю программировать на Python и столкнулся с такой проблемой. Есть код телеграмм бота и он слишком большой не могу его разделить?

    @just_clarity
    Можно поделить на функции, и сделать несколько дополнительных .py файлов, которые затем подключить
    import module
    module.функция
    Ответ написан
    4 комментария
  • Работа с register_next_step_handler()?

    SoreMix
    @SoreMix
    yellow
    1. Не надо здесь вкладывать одну функцию в другую
    2. Ошибка явно говорит о том, что пытаетесь использовать переменную до её обяъвления, так и есть, сначала обращаетесь к new_text_olimp, а создаёте её только в следующей строке.

    Решится просто выносом new_text_olimp из функции просто в тело скрипта.

    Ну и конечно функции бы переименовать, чтобы имена были уникальными
    Ответ написан
    1 комментарий
  • Как ожидать нажатие кнопки в кнопке?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Для того, чтобы ожидать нажатие кнопки, можно использовать функционал InlineKeyboardMarkup вместо ReplyKeyboardMarkup.

    InlineKeyboardMarkup позволяет создавать кнопки, которые могут быть нажатыми, и при нажатии на них бот получает обновление callback_query, которое содержит информацию о нажатой кнопке и чате, в котором произошло нажатие.

    Вот как можно изменить ваш код, чтобы использовать InlineKeyboardMarkup:
    import telebot
    from telebot import types
    import config
    
    bot = telebot.TeleBot(config.token)
    ADMINS = [1111111]
    
    doska = []
    
    @bot.message_handler(commands=['start'])
    def start(message):
        markup = types.InlineKeyboardMarkup()
        btn1 = types.InlineKeyboardButton("Доска Почета", callback_data="doska")
        btn2 = types.InlineKeyboardButton("❓ Задать вопрос", callback_data="question")
        markup.add(btn1, btn2)
        bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я бот инженерной школы".format(message.from_user), reply_markup=markup)
    
    @bot.callback_query_handler(func=lambda call: True)
    def callback_query(call):
        if call.data == "doska":
            markup = types.InlineKeyboardMarkup()
            btn1 = types.InlineKeyboardButton("Назад", callback_data="back")
            btn2 = types.InlineKeyboardButton("Редактировать", callback_data="edit")
            markup.add(btn1)
            if call.message.chat.id in ADMINS:
                markup.add(btn2)
            bot.send_message(call.message.chat.id, text="test text",reply_markup=markup)
        elif call.data == "back":
            markup = types.InlineKeyboardMarkup()
            btn1 = types.InlineKeyboardButton("Доска Почета", callback_data="doska")
            btn2 = types.InlineKeyboardButton("❓ Задать вопрос", callback_data="question")
            markup.add(btn1, btn2)
            bot.send_message(call.message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup)
    
    if __name__ == '__main__':
         print("bot start work")
         bot.infinity_polling()
    Ответ написан
    1 комментарий
  • Почему не работает register_next_step_handler ( telebot )?

    @twistfire92
    Python backend developer
    Ошибка в параметрах, которые передаете в register_next_step_handler

    @bot.message_handler(regexp="Редактировать Доску Почета")
    def red_doska(message):
        if message.chat.id in ADMINS:
            msg = bot.send_message(message.chat.id, text="Жду новое значение")
            bot.register_next_step_handler(msg, redact)
    Ответ написан
    1 комментарий