mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
[core] Massive setting system update
- 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
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System.Runtime.Serialization;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Kruzya.TelegramBot.Core.Options;
|
||||
@@ -6,6 +6,12 @@ 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)
|
||||
@@ -15,11 +21,11 @@ public abstract class AbstractOption<TOption, TValue> : IOption<TValue>
|
||||
|
||||
public async Task<TValue> GetValueAsync(long chatId)
|
||||
{
|
||||
return await _optionProvider.GetValueAsync<TOption, TValue>(chatId);
|
||||
return await _optionProvider.GetValueAsync(chatId, OptionId, DefaultValue);
|
||||
}
|
||||
|
||||
public async Task SetValueAsync(long chatId, TValue value)
|
||||
{
|
||||
await _optionProvider.SetValueAsync<TOption, TValue>(chatId, value);
|
||||
await _optionProvider.SetValueAsync(chatId, OptionId, value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user