Задать вопрос
Контакты
Местоположение
Россия, Воронежская обл., Воронеж

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (41)

Лучшие ответы пользователя

Все ответы (380)
  • Как сделать гиперссылку в Telegram Боте?

    @twistfire92
    Python backend developer
    Если используете библиотеку pyTelegramBotAPI (telebot), то при отправке сообщения пользуйтесь parse_mode и форматированием текста. В случае с гиперссылкой следует делать так:
    text = '[<Ваш текст>](<Ссылка>)'
    bot.send_message(message.chat.id, text, parse_mode='MarkdownV2')


    Подробнее о parse_mode можно найти тут: https://core.telegram.org/bots/api#formatting-options
    Ответ написан
    3 комментария
  • Как расположить inline кнопки в pytelegrambotapi?

    @twistfire92
    Python backend developer
    Row_width не обязательно указывать вообще. По умолчанию значение равно 3.
    Т.е. если просто в объект InlineKeyboardMarkup добавлять кнопки поочередно, они будут выстраиваться линиями по 3 кнопки в ряд.

    Вам надо использовать метод row(), передавая туда список объектов InlineKeyboardButton

    Т.е. если ориентироваться на ваш скрин, то располагать кнопки следует следующим образом:
    start_markup = telebot.types.InlineKeyboardMarkup()
    
    # первый ряд (две кнопки)
    btn1= telebot.types.InlineKeyboardButton('действие 1', callback_data='1')
    btn2= telebot.types.InlineKeyboardButton('действие 2', callback_data='2')
    start_markup.row(btn1, btn2)
    
    # второй ряд (одна кнопка)
    btn3= telebot.types.InlineKeyboardButton('действие 3', callback_data='3')
    start_markup.row(btn3)
    
    # третий ряд (две кнопки)
    btn4= telebot.types.InlineKeyboardButton('действие 4', callback_data='4')
    btn5= telebot.types.InlineKeyboardButton('действие 5', callback_data='5')
    start_markup.row(btn4, btn5)
    
    # четвертый ряд (две кнопки)
    btn6= telebot.types.InlineKeyboardButton('действие 6', callback_data='6')
    btn7= telebot.types.InlineKeyboardButton('действие 7', callback_data='7')
    start_markup.row(btn6, btn7)
    
    # пятый ряд (одна кнопка)
    btn8= telebot.types.InlineKeyboardButton('действие 8', callback_data='8')
    start_markup.row(btn8)
    Ответ написан
    Комментировать
  • Как сделать диапазон цены в 1с?

    @twistfire92
    Python backend developer
    В обработчике ПриИзменении

    Можете завести отдельный регистр, в котором будете хранить допустимые диапазоны цен для каждой позиции. Измерение - ссылка на справочник товаров, ресурсы - минимальная и максимальная цена.
    В обработчике ПриИзменении уже проверять подходит ли новая цена под эти границы.
    Ответ написан
    Комментировать
  • Есть список [234543]. Как проверить, что соседнее число меньше и больше соседнего на 1?

    @twistfire92
    Python backend developer
    можно просто вычислить модуль разности соседних чисел. Если не равен 1, возвращать False

    def more_or_less_one(a):
    	for i in range(len(a)-1):
    		if abs(a[i]-a[i+1]) != 1:
    			return False
    	return True
    Ответ написан
    2 комментария
  • Существуют ли более приятные конструкции чем if elif else где на каждое значение нужно проводить разное действие?

    @twistfire92
    Python backend developer
    Во-первых код надо оборачивать в соответствующий тег.

    По вашему вопросу. В питоне как такового нет оператора case, как во многих других языках. Но из-за того, что все в питоне является объектами, даже функции, то можно провернуть все через словарь

    # прописываем соответсвие значений кубика и действий через словарь
    actions = {1: self.pass_day,
    			2: self.eat_food,
    			3: self.work_day,
    			4: self.have_fun,
    			5: self.go_shopping,
    			6: self.sleep}
    
    action = actions[dice] # получаем нужную функцию
    
    action() # Выполняем нужную функцию


    Заметьте, что в словаре прописываем имена функций без (), т.к. мы не выполняем их, а только ссылаемся на сами объекты.

    P.S. Код не проверялся, возможно где-то есть небольшие неточности, но примерно такую же конструкцию сам использовал как-то.
    Ответ написан
    Комментировать