mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
27ddfd39cc
- Get rid of attribute crap. Now only interface is required - Rename canUse to isAdmin in `Bot.IsUserAdminAsync` to match the actual meaning of variable - Made `AnswerQuery` reusable by moving it from ContentStore to Core's CommonHandler - Chat Settings edit frontend (inline keyboard) - Rename NsfwOption to AllowNsfw and move it to ContentStore module - Remove option backend testing commands - Add KarmaMode option as an example of Select option type
31 lines
965 B
C#
31 lines
965 B
C#
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Kruzya.TelegramBot.Core.Options;
|
|
|
|
public abstract class AbstractOption<TOption, TValue> : IOption<TValue>
|
|
where TOption: AbstractOption<TOption, TValue>
|
|
{
|
|
public abstract string OptionId { get; }
|
|
public abstract string OptionName { get; }
|
|
public abstract OptionType OptionType { get; }
|
|
public abstract TValue DefaultValue { get; }
|
|
public List<SelectChoice> ChoiceList { get; } = new();
|
|
|
|
private readonly IOptionProvider _optionProvider;
|
|
|
|
protected AbstractOption(IOptionProvider optionProvider)
|
|
{
|
|
_optionProvider = optionProvider;
|
|
}
|
|
|
|
public async Task<TValue> GetValueAsync(long chatId)
|
|
{
|
|
return await _optionProvider.GetValueAsync(chatId, OptionId, DefaultValue);
|
|
}
|
|
|
|
public async Task SetValueAsync(long chatId, TValue value)
|
|
{
|
|
await _optionProvider.SetValueAsync(chatId, OptionId, value);
|
|
}
|
|
} |