@dreameddd
У меня есть выдача достижений через базу данных. Если я хочу добавить какое-то достижение, то пишу в конце команды код, который проверяет: если достижение «Название» нету в списке достижений у пользователя (из бд), то добавляем и отправляем сообщение о том, что достижение получено, если же достижение уже есть — то сообщения об этом нету, но это просто пустой код, который убирает оптимизацию. И так к каждой команде или сообщениям (допустим достижение за 10, 100, 1000 сообщений через on_message, т.е. бот при каждом новом сообщении пользователя проверяет, есть ли у него достижение или нет. Так вот, как можно поместить допустим все достижения в одном файле и выдавать их за определенные действия? Или сделать как-нибудь проще? (Знаю, что вопрос может быть не понятен)
Решения вопроса 1
@Vindicar
Подумай, что требуется для описания достижения:
1. Событие, которое вызвает его получение (сообщение, реакция, заход на канал, и т.д.)
2. Программный код, который получает данные о событии и обновляет состояние достижения (например, увеличивает счётчик сообщений). Он может сообщить, получено ли пользователем какое-то достижение вместе с этим событием.
3. База, где хранится информация о достижениях того или иного пользователя. В простейшем случае она будет иметь вид «пользователь-показатель-счётчик», т.е. например «вася — сообщения — 254». Код из п.2 будет читать этот показатель, увеличивать его, и если достигнуто желаемое значение, то выдавать сообщение. Для простоты можно хранить сообщения в отдельной таблице вида «показатель-порог-сообщение», тогда если показатель равен тому или иному порогу, бот должен послать соответствующее сообщение.
1. Событие, которое вызвает его получение (сообщение, реакция, заход на канал, и т.д.)
2. Программный код, который получает данные о событии и обновляет состояние достижения (например, увеличивает счётчик сообщений). Он может сообщить, получено ли пользователем какое-то достижение вместе с этим событием.
3. База, где хранится информация о достижениях того или иного пользователя. В простейшем случае она будет иметь вид «пользователь-показатель-счётчик», т.е. например «вася — сообщения — 254». Код из п.2 будет читать этот показатель, увеличивать его, и если достигнуто желаемое значение, то выдавать сообщение. Для простоты можно хранить сообщения в отдельной таблице вида «показатель-порог-сообщение», тогда если показатель равен тому или иному порогу, бот должен послать соответствующее сообщение.
Отсюда получается, что бот или его компонент должен содержать набор маленьких процедур, которые устанавливают связь между событием и показателем. А после обновления показателя может использоваться общая логика, которая проверит, не достигнут ли очередной порог.
4
комментария
Ответы на вопрос 0
