2021-12-26 15:40:14 +02:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Telegram.Bot;
|
|
|
|
|
using Telegram.Bot.Types;
|
|
|
|
|
|
|
|
|
|
namespace West.TelegramBot.ChatManagement.Extensions
|
|
|
|
|
{
|
|
|
|
|
public static class BotExtension
|
|
|
|
|
{
|
|
|
|
|
public static async Task<bool> CanPunishMember(this ITelegramBotClient bot, Chat chat, User user, User victim = null)
|
|
|
|
|
{
|
|
|
|
|
var callerMember = await bot.GetChatMemberAsync(chat, user.Id);
|
|
|
|
|
var canUse = callerMember is ChatMemberOwner;
|
|
|
|
|
|
|
|
|
|
if (callerMember is ChatMemberAdministrator callerAdmin)
|
|
|
|
|
{
|
|
|
|
|
canUse = callerAdmin.CanRestrictMembers;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (victim != null && canUse)
|
|
|
|
|
{
|
|
|
|
|
var victimMember = await bot.GetChatMemberAsync(chat, victim.Id);
|
2021-12-29 14:51:49 +02:00
|
|
|
canUse = victimMember is not ChatMemberOwner && victimMember is not ChatMemberAdministrator && !victim.IsBot;
|
2021-12-26 15:40:14 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return canUse;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|