mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
Migrate to database storage in UrlLimitations
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user