mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 09:06:09 +03:00
Add /at remove
This commit is contained in:
parent
3512a7f9e4
commit
715ea7528f
@ -25,6 +25,7 @@ namespace JetKarmaBot.Commands
|
|||||||
Router = r;
|
Router = r;
|
||||||
Router.SuperCommand = "at";
|
Router.SuperCommand = "at";
|
||||||
r.Add(c.GetInstance<AwardTypeManage.CreateCommand>());
|
r.Add(c.GetInstance<AwardTypeManage.CreateCommand>());
|
||||||
|
r.Add(c.GetInstance<AwardTypeManage.RemoveCommand>());
|
||||||
r.Add(c.GetInstance<HelpCommand>());
|
r.Add(c.GetInstance<HelpCommand>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
86
JetKarmaBot/Commands/AwardTypeManage/RemoveCommand.cs
Normal file
86
JetKarmaBot/Commands/AwardTypeManage/RemoveCommand.cs
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using JetKarmaBot.Models;
|
||||||
|
using JetKarmaBot.Services;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Perfusion;
|
||||||
|
using Telegram.Bot;
|
||||||
|
using Telegram.Bot.Args;
|
||||||
|
using Telegram.Bot.Types;
|
||||||
|
using Telegram.Bot.Types.Enums;
|
||||||
|
|
||||||
|
namespace JetKarmaBot.Commands.AwardTypeManage
|
||||||
|
{
|
||||||
|
public class RemoveCommand : IChatCommand
|
||||||
|
{
|
||||||
|
public IReadOnlyCollection<string> Names => new[] { "remove" };
|
||||||
|
|
||||||
|
public string Description => "Remove an award type.";
|
||||||
|
|
||||||
|
public string DescriptionID => "jetkarmabot.at.remove.help";
|
||||||
|
[Inject] TelegramBotClient Client { get; set; }
|
||||||
|
[Inject] public KarmaContextFactory Db { get; set; }
|
||||||
|
[Inject] public Localization Locale { get; set; }
|
||||||
|
|
||||||
|
public IReadOnlyCollection<ChatCommandArgument> Arguments => new[] {
|
||||||
|
new ChatCommandArgument() {
|
||||||
|
Name="award",
|
||||||
|
Required=true,
|
||||||
|
Type=ChatCommandArgumentType.String,
|
||||||
|
Description="The award to remove",
|
||||||
|
DescriptionID="jetkarmabot.award.cmdnamehelp"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public async Task<bool> Execute(ICommandRouter route, CommandString cmd, MessageEventArgs args)
|
||||||
|
{
|
||||||
|
using (var db = Db.GetContext())
|
||||||
|
{
|
||||||
|
var currentLocale = Locale[(await db.Chats.FindAsync(args.Message.Chat.Id)).Locale];
|
||||||
|
|
||||||
|
ChatMember cm = await Client.GetChatMemberAsync(args.Message.Chat.Id, args.Message.From.Id);
|
||||||
|
if (cm.Status != ChatMemberStatus.Administrator && cm.Status != ChatMemberStatus.Creator)
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(
|
||||||
|
args.Message.Chat.Id,
|
||||||
|
currentLocale["jetkarmabot.at.remove.errperm"],
|
||||||
|
replyToMessageId: args.Message.MessageId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmd.Parameters.Length < 1 || cmd.Parameters.Length > 1)
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(
|
||||||
|
args.Message.Chat.Id,
|
||||||
|
currentLocale["jetkarmabot.at.remove.errarg"],
|
||||||
|
replyToMessageId: args.Message.MessageId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
AwardType awardType = await db.AwardTypes.FirstAsync(x => x.CommandName == cmd.Parameters[0]);
|
||||||
|
|
||||||
|
if (awardType == null)
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(
|
||||||
|
args.Message.Chat.Id,
|
||||||
|
currentLocale["jetkarmabot.at.remove.errinvcn"],
|
||||||
|
replyToMessageId: args.Message.MessageId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
await db.Database.ExecuteSqlCommandAsync("DELETE FROM award WHERE awardtypeid = @p0", awardType.AwardTypeId); // No delete by predicate in ef core yet..s
|
||||||
|
|
||||||
|
db.AwardTypes.Remove(awardType);
|
||||||
|
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
|
await Client.SendTextMessageAsync(
|
||||||
|
args.Message.Chat.Id,
|
||||||
|
currentLocale[string.Format("jetkarmabot.at.remove.success", cmd.Parameters[0])],
|
||||||
|
replyToMessageId: args.Message.MessageId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user