From df374e0b35ba64fe65a5aef3c08587b6989fc0fe Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Sun, 26 Dec 2021 13:15:07 +0200 Subject: [PATCH] ChatManagement module. --- Kruzya.TelegramBot.sln | 7 ++ modules/ChatManagement/ChatManagement.cs | 11 +++ modules/ChatManagement/ChatManagement.csproj | 13 ++++ modules/ChatManagement/Handler/Command.cs | 70 ++++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 modules/ChatManagement/ChatManagement.cs create mode 100644 modules/ChatManagement/ChatManagement.csproj create mode 100644 modules/ChatManagement/Handler/Command.cs diff --git a/Kruzya.TelegramBot.sln b/Kruzya.TelegramBot.sln index 9681417..cefa82f 100644 --- a/Kruzya.TelegramBot.sln +++ b/Kruzya.TelegramBot.sln @@ -14,6 +14,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UrlLimitations", "modules\U EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Destiny2.WhereIsXur", "modules\Destiny2.WhereIsXur\Destiny2.WhereIsXur.csproj", "{AE782132-BED8-4D1E-98FA-CB768171D332}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatManagement", "modules\ChatManagement\ChatManagement.csproj", "{55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -44,11 +46,16 @@ Global {AE782132-BED8-4D1E-98FA-CB768171D332}.Debug|Any CPU.Build.0 = Debug|Any CPU {AE782132-BED8-4D1E-98FA-CB768171D332}.Release|Any CPU.ActiveCfg = Release|Any CPU {AE782132-BED8-4D1E-98FA-CB768171D332}.Release|Any CPU.Build.0 = Release|Any CPU + {55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {F1E1FBB7-ABA4-4304-9A42-D4975822B002} = {C7821F15-DEDD-474F-A575-A296D4B58F10} {C50D64C3-204B-4B58-927B-C8D759787252} = {C7821F15-DEDD-474F-A575-A296D4B58F10} {B82E3339-3B34-4600-8C59-C5A3640B1982} = {C7821F15-DEDD-474F-A575-A296D4B58F10} {AE782132-BED8-4D1E-98FA-CB768171D332} = {C7821F15-DEDD-474F-A575-A296D4B58F10} + {55ACF7F7-409A-45EE-A41D-D8417DE7EAA7} = {C7821F15-DEDD-474F-A575-A296D4B58F10} EndGlobalSection EndGlobal diff --git a/modules/ChatManagement/ChatManagement.cs b/modules/ChatManagement/ChatManagement.cs new file mode 100644 index 0000000..782feb6 --- /dev/null +++ b/modules/ChatManagement/ChatManagement.cs @@ -0,0 +1,11 @@ +using Kruzya.TelegramBot.Core; + +namespace West.TelegramBot.ChatManagement +{ + public class ChatManagement : Module + { + public ChatManagement(Core core) : base(core) + { + } + } +} \ No newline at end of file diff --git a/modules/ChatManagement/ChatManagement.csproj b/modules/ChatManagement/ChatManagement.csproj new file mode 100644 index 0000000..86601c4 --- /dev/null +++ b/modules/ChatManagement/ChatManagement.csproj @@ -0,0 +1,13 @@ + + + + net5.0 + TelegramBot.ChatManagement + West.TelegramBot.ChatManagement + + + + + + + diff --git a/modules/ChatManagement/Handler/Command.cs b/modules/ChatManagement/Handler/Command.cs new file mode 100644 index 0000000..d667c26 --- /dev/null +++ b/modules/ChatManagement/Handler/Command.cs @@ -0,0 +1,70 @@ +using System; +using System.Threading.Tasks; +using BotFramework; +using BotFramework.Attributes; +using BotFramework.Enums; +using Kruzya.TelegramBot.Core.Data; +using Kruzya.TelegramBot.Core.Extensions; +using Telegram.Bot; +using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; + +namespace West.TelegramBot.ChatManagement.Handler +{ + public class Command : BotEventHandler + { + private CoreContext _db; + + public Command(CoreContext db) + { + _db = db; + } + + [Command("warn", CommandParseMode.Both)] + public async Task HandleWarn() + { + var callerMember = await Bot.GetChatMemberAsync(Chat, From.Id); + var canUse = callerMember is ChatMemberOwner; + + if (callerMember is ChatMemberAdministrator callerAdmin) + { + canUse = callerAdmin.CanRestrictMembers; + } + + if (canUse) + { + var userValues = _db.UserValues; + + var warnUser = RawUpdate.Message.ReplyToMessage.From; + var warnUserId = warnUser.Id; + var warnOption = await userValues.FindOrCreateOption(Chat.Id, warnUserId, "warnCount"); + var warnCount = warnOption.GetValue() + 1; + warnOption.SetValue(warnCount); + _db.MarkAsModified(warnOption); + + await Bot.SendTextMessageAsync(Chat.Id, $"{warnUser.ToHtml()}
, Вам выдано предупреждение! " +
+                                                        $"Текущее кол-во: {warnCount} / 3заблокировал
{warnUser.ToHtml()}
на 7 дней
", + disableNotification: true, parseMode: ParseMode.Html); + } + } + } + } +} \ No newline at end of file