using System.Text; using System.Threading.Tasks; using BotFramework; using BotFramework.Attributes; using BotFramework.Enums; using Kruzya.TelegramBot.CombotAntiSpam.Combot; using Kruzya.TelegramBot.Core.Extensions; using Telegram.Bot; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.CombotAntiSpam; public class UserJoinHandler : BotEventHandler { private readonly ICombotClient _combotClient; public UserJoinHandler(ICombotClient combotClient) { _combotClient = combotClient; } [InChat(InChat.Public)] [Message(MessageFlag.HasNewChatMembers)] public async Task OnUserJoined() { var canKickMembers = await Bot.IsUserAdminAsync(Chat, await Bot.GetMeAsync()); 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); } } } }