• Отказоусточивый клиент-серверный чат на сокетах?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Вот я делал доклад на эту тему https://habr.com/ru/post/341662/
    Про отказоустойчивость там начинается на 16 слайде.
    Ответ написан
    Комментировать
  • Как упростить код?

    @Neyury
    Упростить код можно как-то так
    goods = ['Товар1', 'Товар2', 'Товар3', 'Товар4', 'Товар5', 'Товар6', 'Товар7', 'Товар8', 'Товар9', 'Товар10', 'Товар11', 'Товар12']
    
    @bot.message_handler(func=lambda mess: "Продукция1" == mess.text, content_types=['text'])
    def handle_text(message):
        keyboard = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=False)
    
        for goods_item in goods:
            keyboard.row(goods_item)
    
        bot.send_message(message.from_user.id, "Выберите товар", reply_markup=keyboard)
    
    @bot.message_handler(func=lambda mess: mess.text in goods, content_types=['text'])
    def handle_text(message):
        keyboard = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=False)
    
        if message.text in goods:
            bot.send_message(message.chat.id, "", reply_markup=keyboard )


    Массив goods соответственно можете определять динамически как вам удобно, формировать другие списки и т.д.

    Вариантов хранения огромное множество, какой выбрать зависит от способа размещения бота и способа получения первоначальных данных. Это может бытьфайл txt, csv, json, xml, или python объекты, сохраненные через модули shelve или pickle, или sqlite база данных, или полноценная база данных.

    UPD:
    Функции называются одинаково, надо дать им разные названия
    Ответ написан
    7 комментариев