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); } } } } }