Files
telegram-bot/modules/UrlLimitations/MessageExtension.cs
T
2023-07-29 15:14:52 +03:00

62 lines
1.9 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
namespace Kruzya.TelegramBot.UrlLimitations;
public static class MessageExtension
{
public static async Task<bool> HasUnknownMention(this Message message, ITelegramBotClient bot)
{
foreach (var mention in message.Entities.Where(e =>
e.Type == MessageEntityType.Mention || e.Type == MessageEntityType.TextMention))
{
long userId = 0;
if (mention.Type == MessageEntityType.TextMention)
{
userId = mention.User.Id;
}
else
{
try
{
var chat = await bot.GetChatAsync(
new ChatId(message.Text.Substring(mention.Offset, mention.Length)));
if (chat != null)
{
if (chat.Type != ChatType.Private)
{
return true;
}
userId = Convert.ToInt64(chat.Id);
}
}
catch (Exception)
{
return true;
}
}
var status = (await bot.GetChatMemberAsync(message.Chat, userId)).Status;
if ((new ChatMemberStatus[]
{
ChatMemberStatus.Administrator, ChatMemberStatus.Creator, ChatMemberStatus.Member,
ChatMemberStatus.Restricted
// i'm not sure about "Restricted"
// maybe leaved members with some restrictions also can be "Restricted".
}).Any(e => e == status) == false)
{
return true;
}
}
return false;
}
}