170 похожих чатов

Народ, добрый вечер! У меня вопросы по проектированию. Помогите, пожалуйста,

у кого есть возможность.
Пишу бота, использую библиотеку telebot для Python (https://github.com/eternnoir/pyTelegramBotAPI).
Сейчас делаю большое разветвленное меню с большим количеством кнопок и разделов. Кнопки есть как обычные, так и инлайн.

После длительного гугления пришел к выводу, что для такого лучше всего использовать конечные автоматы.
Каждый раздел меню я обозначил определенным именем(состоянием). Пользователь нажимая кнопки, продвигается по разделам и переходит из одного состояния в другое.
Насколько я понимаю, для каждого нового пользователя мне нужно фиксировать состояние и где-то его записывать, меняя при каждом переходе в новый раздел меню. Если я всё правильно себе придумал, то:
Где мне хранить состояния текущих пользователей?
Судя по всему key-value хранилище - хороший вариант. Лучше использовать что-то вроде Redis или можно обойтись стандартным shelve?
Можно ли всё хранить в обычном словаре?

Спасибо за внимание.

2 ответов

6 просмотров

Ну хранить в обычном словаре ты не долго будешь

Все верно, редис отлично подойдет.

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

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Карта сайта