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.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); 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()} is spammer.\n"); messageText.Append( $"More details you can find on CAS site."); await Bot.SendTextMessageAsync(Chat, messageText.ToString(), ParseMode.Html); if (canKickMembers) { await Bot.KickChatMemberAsync(Chat, member.Id); } } } } }