[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:
Andriy
2023-07-21 17:14:11 +03:00
parent 467ccd4fde
commit 27ddfd39cc
21 changed files with 307 additions and 110 deletions
+21
View File
@@ -0,0 +1,21 @@
using Kruzya.TelegramBot.Core.Options;
namespace West.TelegramBot.Reputation.Options;
public class KarmaMode : AbstractOption<KarmaMode, string>
{
public override string OptionId => "karmaMode";
public override string OptionName => "Karma Mode";
public override OptionType OptionType => OptionType.Select;
public override string DefaultValue => "geometric";
public KarmaMode(IOptionProvider optionProvider) : base(optionProvider)
{
ChoiceList.AddRange(new []
{
new SelectChoice("geometric", "Geometric", "G"),
new SelectChoice("linear", "Linear", "L")
});
}
}
+3
View File
@@ -1,9 +1,11 @@
using Kruzya.TelegramBot.Core;
using Kruzya.TelegramBot.Core.Options;
using Kruzya.TelegramBot.Core.Service;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using West.TelegramBot.Reputation.Data;
using West.TelegramBot.Reputation.Options;
using West.TelegramBot.Reputation.Service;
namespace West.TelegramBot.Reputation;
@@ -20,5 +22,6 @@ public class Reputation : Module
services.AddDbContext<ReputationContext>(options => options.UseMySql(dsn, ServerVersion.AutoDetect(dsn)));
services.AddScoped<IReputation, ReputationService>();
services.AddScoped<IOption, KarmaMode>();
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>