From 64a4a1fabb6c3876cfe49144edb89c6d55b0ff9d Mon Sep 17 00:00:00 2001 From: West14 <30056636+West14@users.noreply.github.com> Date: Mon, 3 Jan 2022 22:13:44 +0200 Subject: [PATCH] Add UserGroupTag module. --- Kruzya.TelegramBot.sln | 6 ++ modules/UserGroupTag/Handler.cs | 91 ++++++++++++++++++++++++ modules/UserGroupTag/UserGroupTag.cs | 10 +++ modules/UserGroupTag/UserGroupTag.csproj | 15 ++++ 4 files changed, 122 insertions(+) create mode 100644 modules/UserGroupTag/Handler.cs create mode 100644 modules/UserGroupTag/UserGroupTag.cs create mode 100644 modules/UserGroupTag/UserGroupTag.csproj diff --git a/Kruzya.TelegramBot.sln b/Kruzya.TelegramBot.sln index 9cd7ce6..fe567b1 100644 --- a/Kruzya.TelegramBot.sln +++ b/Kruzya.TelegramBot.sln @@ -17,6 +17,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Destiny2.WhereIsXur", "modu EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatManagement", "modules\ChatManagement\ChatManagement.csproj", "{55ACF7F7-409A-45EE-A41D-D8417DE7EAA7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserGroupTag", "modules\UserGroupTag\UserGroupTag.csproj", "{5B89E22A-78CF-4037-BE0D-5F88EF47022B}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entertainment", "modules\Entertainment\Entertainment.csproj", "{1D62101B-C2B1-4E79-8F7A-690E44E3EE81}" EndProject @@ -54,6 +55,10 @@ Global {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 + {5B89E22A-78CF-4037-BE0D-5F88EF47022B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B89E22A-78CF-4037-BE0D-5F88EF47022B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B89E22A-78CF-4037-BE0D-5F88EF47022B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B89E22A-78CF-4037-BE0D-5F88EF47022B}.Release|Any CPU.Build.0 = Release|Any CPU {1D62101B-C2B1-4E79-8F7A-690E44E3EE81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1D62101B-C2B1-4E79-8F7A-690E44E3EE81}.Debug|Any CPU.Build.0 = Debug|Any CPU {1D62101B-C2B1-4E79-8F7A-690E44E3EE81}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -65,6 +70,7 @@ Global {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} + {5B89E22A-78CF-4037-BE0D-5F88EF47022B} = {C7821F15-DEDD-474F-A575-A296D4B58F10} {1D62101B-C2B1-4E79-8F7A-690E44E3EE81} = {C7821F15-DEDD-474F-A575-A296D4B58F10} EndGlobalSection EndGlobal diff --git a/modules/UserGroupTag/Handler.cs b/modules/UserGroupTag/Handler.cs new file mode 100644 index 0000000..0b6b246 --- /dev/null +++ b/modules/UserGroupTag/Handler.cs @@ -0,0 +1,91 @@ +#nullable enable + +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using BotFramework; +using BotFramework.Attributes; +using BotFramework.Enums; +using BotFramework.Utils; +using Castle.Core.Internal; +using Kruzya.TelegramBot.Core.Data; +using Kruzya.TelegramBot.Core.Extensions; +using Telegram.Bot; +using Telegram.Bot.Types.Enums; + +namespace UserGroupTag +{ + public class Handler : BotEventHandler + { + private readonly CoreContext _db; + + public Handler(CoreContext db) + { + _db = db; + } + + [ParametrizedCommand(InChat.Public, "add_group", CommandParseMode.Both)] + public async Task HandleAddGroup(string groupName) + { + Console.WriteLine("add_group"); + // var groupName = group.Text; + + var repliedMessage = RawUpdate.Message!.ReplyToMessage; + if (repliedMessage == null || repliedMessage.From!.IsBot || groupName.IsNullOrEmpty()) + { + return; + } + + var from = repliedMessage.From; + var fromId = from.Id; + var chatId = Chat!.Id; + + var userGroupOption = await _db.UserValues.FindOrCreateOption(Chat.Id, "userGroups"); + var tagDictionary = userGroupOption.GetValue(new Dictionary>()); + + var memberList = tagDictionary.GetValueOrDefault(groupName, new List()); + if (memberList.Contains(fromId)) + { + await Bot.SendTextMessageAsync(chatId, $"{from.ToHtml()} уже находится в группе {groupName}", + ParseMode.Html); + return; + } + memberList.Add(repliedMessage.From.Id); + tagDictionary[groupName] = memberList; + + userGroupOption.SetValue(tagDictionary); + _db.MarkAsModified(userGroupOption); + + await Bot.SendTextMessageAsync(chatId, $"{from.ToHtml()} добавлен в группу {groupName}", + ParseMode.Html); + } + + [ParametrizedCommand(InChat.Public, "tag_group", CommandParseMode.Both)] + public async Task HandleTagGroup(string groupName) + { + if (string.IsNullOrEmpty(groupName)) + { + return; + } + + var userGroupOption = await _db.UserValues.FindOption(Chat.Id, "userGroups"); + + var userList = userGroupOption?.GetValue>>()?[groupName]; + if (userList == null || userList.Count == 0) + { + return; + } + + var msg = new HtmlString() + .Text("Пользователь ") + .UserMention(From) + .Text(" охуел и хочет доебаться к: "); + foreach (var userId in userList) + { + msg.User(userId, userId.ToString()).Text(", "); + } + + await Bot.SendTextMessageAsync(Chat.Id, msg.ToString().TrimEnd(',', ' '), ParseMode.Html); + } + } +} \ No newline at end of file diff --git a/modules/UserGroupTag/UserGroupTag.cs b/modules/UserGroupTag/UserGroupTag.cs new file mode 100644 index 0000000..a08b61d --- /dev/null +++ b/modules/UserGroupTag/UserGroupTag.cs @@ -0,0 +1,10 @@ +using System; +using Kruzya.TelegramBot.Core; + +namespace UserGroupTag +{ + public class UserGroupTag : Module + { + public UserGroupTag(Core core) : base(core) { } + } +} \ No newline at end of file diff --git a/modules/UserGroupTag/UserGroupTag.csproj b/modules/UserGroupTag/UserGroupTag.csproj new file mode 100644 index 0000000..b83d956 --- /dev/null +++ b/modules/UserGroupTag/UserGroupTag.csproj @@ -0,0 +1,15 @@ + + + + net5.0 + + + + + + + + + + +