using System.Text;
using System.Threading.Tasks;
using BotFramework;
using BotFramework.Attributes;
using BotFramework.Enums;
using BotFramework.Setup;
using Kruzya.TelegramBot.CombotAntiSpam.Combot;
using Kruzya.TelegramBot.Core.Extensions;
using Microsoft.Extensions.Logging;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
namespace Kruzya.TelegramBot.CombotAntiSpam
{
public class UserJoinHandler : BotEventHandler
{
protected ICombotClient _combotClient;
protected ILogger _logger;
public UserJoinHandler(ICombotClient combotClient)
{
_combotClient = combotClient;
}
[Message(InChat.Public, MessageFlag.HasNewChatMembers)]
public async Task OnUserJoined()
{
// var canKickMembers = (await Bot.GetChatMemberAsync(Chat, (await Bot.GetMeAsync()).Id)).CanRestrictMembers == true;
var meUserId = (await Bot.GetMeAsync()).Id;
var meChatMember = await Bot.GetChatMemberAsync(Chat, meUserId);
var canKickMembers = false;
if (meChatMember is ChatMemberAdministrator adminMember)
{
canKickMembers = adminMember.CanRestrictMembers;
}
foreach (var member in RawUpdate.Message.NewChatMembers)
{
if (!(await _combotClient.IsSpammerAsync(member)))
{
continue;
}
var messageText = new StringBuilder();
messageText.Append($"⚠️ Combot Anti-Spam\n\n");
messageText.Append($"User {member.ToHtml(true)} is spammer.\n");
messageText.Append(
$"More details you can find on CAS site.");
await Bot.SendTextMessageAsync(Chat, messageText.ToString(), parseMode: ParseMode.Html);
if (canKickMembers)
{
await Bot.BanChatMemberAsync(Chat, member.Id);
}
}
}
}
}