Files
telegram-bot/modules/UrlLimitations/MessageExtension.cs
T

64 lines
2.0 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using BotFramework;
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))
{
var 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.ToInt32(chat.Id);
}
}
catch (Exception e)
{
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;
}
}
}