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

Как добавить гиперссылку в кнопку Telegram бота?

Здравствуйте!
Имеется небольшой код на Python, используется TelegramBotAPI (telebot)
import telebot
from telebot import types

bot = telebot.TeleBot('1388583270:AAHDIJbciOEzpUTU0y9XhDzDpbaxzybYNOI')


@bot.message_handler(commands=['start'])
def handle_start(message):
   bot_l = telebot.types.ReplyKeyboardMarkup(True,False)
   bot_l.row ('Отдел продаж')
   bot_l.row ('Техподдержка','Бухгалтерия')
   bot_l.row ('Адрес офиса','График работы')
   bot_l.row ('Перейти на сайт')
   bot.send_message(message.chat.id,  'Добро пожаловать в Telegram бот компании "Лайт". \nНажимая на кнопки, Вы сможете узнать номера телефонов, график работы, и другое.', reply_markup=bot_l)



@bot.message_handler(content_types=['text'])
def send_text(message):
       if message.text == 'Отдел продаж':
             bot.send_message(message.chat.id, '8 (888) 888888, доб. 300')
       elif message.text == 'Техподдержка':
             bot.send_message(message.chat.id, '8 (888) 888888, доб. 301')
       elif message.text == 'Бухгалтерия':
             bot.send_message(message.chat.id, '8 (888) 888888, доб. 302')
       elif message.text == 'Адрес офиса':
           bot.send_message(message.chat.id, 'Наш адрес находится по адресу - адрес'
                                             'Для удобства, Вы так же можете посмотреть расположение на карте ниже.')
           bot.send_chat_action(message.chat.id, 'find_location')
           bot.send_location(message.chat.id, 53.35570095764,83.7825186655)
       elif message.text == 'График работы':
           bot.send_message(message.chat.id, 'Понедельник: 9:00–17:30 \nВторник: 9:00–17:30 \nСреда: 9:00–17:30 \nЧетверг: 9:00–17:30 \nПятница: 9:00–17:00 \nСуббота: Выходной \nВоскресенье: Выходной')
       elif message.text == 'Перейти на сайт':
           
bot.polling()


в кнопку "elif message.text == 'Перейти на сайт':" нужно добавить гиперссылку.
На картинке 5fbb782e6b82b086861758.png
показано расположение всех кнопок, и нужно, что бы при нажатии на кнопку "Перейти на сайт", открывалась ссылка.
Заранее - спасибо!
  • Вопрос задан
  • 852 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
shabelski89
@shabelski89
engineer
Как написали выше только через inline клавиатуру.
Рабочий код с примерами ниже, допиливайте как надо.
import telebot
from telebot import types

token = ""

bot = telebot.TeleBot(token)

contacs = {'sales': '8 (888) 888888, доб. 300',
           'support': '8 (888) 888888, доб. 301',
           'accounting': '8 (888) 888888, доб. 302',
           'address': 'Наш адрес находится по адресу - адрес'}


@bot.message_handler(commands=['start'])
def handle_start(message):
    keyboardmain = types.InlineKeyboardMarkup()
    help = types.InlineKeyboardButton(text="Помощь", callback_data="help")
    contacts = types.InlineKeyboardButton(text="Адрес офиса", callback_data="address")
    site = types.InlineKeyboardButton(text="Перейти на сайт", callback_data="site", url='https://qna.habr.com/q/889613')
    keyboardmain.add(help, contacts, site)
    text = 'Добро пожаловать в Telegram бот компании "Лайт".'
    bot.send_message(chat_id=message.chat.id, text=text, reply_markup=keyboardmain)


@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    keyboardmain = types.InlineKeyboardMarkup()
    help = types.InlineKeyboardButton(text="Помощь", callback_data="help")
    contacts = types.InlineKeyboardButton(text="Адрес офиса", callback_data="address")
    site = types.InlineKeyboardButton(text="Перейти на сайт", callback_data="site", url='https://qna.habr.com/q/889613')
    buttons = [help, contacts, site]
    text = contacs.get(call.data, None)
    if call.data == 'help':
        accounting = types.InlineKeyboardButton(text="Бухгалтерия", callback_data="accounting")
        support = types.InlineKeyboardButton(text="Техподдержка", callback_data="support")
        sales = types.InlineKeyboardButton(text="Отдел продаж", callback_data="sales")
        back = types.InlineKeyboardButton(text="Назад", callback_data="back")
        buttons = [accounting, support, sales, back]
        text = 'Выберите пункт меню: '
    if call.data == 'accounting':
        back = types.InlineKeyboardButton(text="Назад", callback_data="back")
        buttons.append(back)
    if call.data == 'support':
        back = types.InlineKeyboardButton(text="Назад", callback_data="back")
        buttons.append(back)
    if call.data == 'sales':
        back = types.InlineKeyboardButton(text="Назад", callback_data="back")
        buttons.append(back)
    if call.data == 'address':
        back = types.InlineKeyboardButton(text="Назад", callback_data="back")
        buttons.append(back)
    keyboardmain.add(*buttons)
    bot.send_message(chat_id=call.message.chat.id, text=text, reply_markup=keyboardmain)


if __name__ == "__main__":
    try:
        bot.polling(none_stop=True)
    except Exception as Error:
        print(Error)

вот как будет выглядеть
5fbb8eef7ca8b632815097.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Нельзя сделать такое через обычную клавиатуру
Ответ написан
Ваш ответ на вопрос

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

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