Files

62 lines
1.9 KiB
C#
Raw Permalink Normal View History

using System;
using System.Linq;
using System.Threading.Tasks;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
2023-07-29 15:14:52 +03:00
namespace Kruzya.TelegramBot.UrlLimitations;
public static class MessageExtension
{
2023-07-29 15:14:52 +03:00
public static async Task<bool> HasUnknownMention(this Message message, ITelegramBotClient bot)
{
2023-07-29 15:14:52 +03:00
foreach (var mention in message.Entities.Where(e =>
e.Type == MessageEntityType.Mention || e.Type == MessageEntityType.TextMention))
{
2023-07-29 15:14:52 +03:00
long userId = 0;
if (mention.Type == MessageEntityType.TextMention)
{
2023-07-29 15:14:52 +03:00
userId = mention.User.Id;
}
else
{
try
{
2023-07-29 15:14:52 +03:00
var chat = await bot.GetChatAsync(
new ChatId(message.Text.Substring(mention.Offset, mention.Length)));
2023-07-29 15:14:52 +03:00
if (chat != null)
{
if (chat.Type != ChatType.Private)
{
2023-07-29 15:14:52 +03:00
return true;
}
2023-07-29 15:14:52 +03:00
userId = Convert.ToInt64(chat.Id);
}
}
2023-07-29 15:14:52 +03:00
catch (Exception)
{
return true;
}
}
2023-07-29 15:14:52 +03:00
var status = (await bot.GetChatMemberAsync(message.Chat, userId)).Status;
2023-07-29 15:14:52 +03:00
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)
2023-07-29 15:14:52 +03:00
{
return true;
}
}
2023-07-29 15:14:52 +03:00
return false;
}
}