mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
Add UserGroupTag module.
This commit is contained in:
@@ -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<string, List<long>>());
|
||||
|
||||
var memberList = tagDictionary.GetValueOrDefault(groupName, new List<long>());
|
||||
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<Dictionary<string, List<long>>>()?[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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user