using System.Linq; using System.Threading.Tasks; using BotFramework; using BotFramework.Attributes; using BotFramework.Enums; using BotFramework.Utils; using Kruzya.TelegramBot.Core.Extensions; using Telegram.Bot; using Telegram.Bot.Types.Enums; using West.TelegramBot.ChatManagement.Service; namespace West.TelegramBot.ChatManagement.Handler; public class Greet : BotEventHandler { private readonly RulesService _rulesService; public Greet(RulesService rulesService) { _rulesService = rulesService; } [InChat(InChat.Public)] [Message(MessageFlag.HasNewChatMembers)] public async Task HandleNewChatMembers() { var message = RawUpdate.Message!; var members = message.NewChatMembers!; var reply = new HtmlString(); string membersHtml; if (members.Length > 1) { reply.Code("Приветствуем новых участников!"); membersHtml = string.Join(", ", members.Select(u => u.ToHtml())); } else { reply.Code("Приветствуем нового участника!"); membersHtml = members.First().ToHtml(); } reply.Br().TextBr("{0}"); if (await _rulesService.HasRulesAsync(Chat)) { reply.Text("Пожалуйста, ознакомьтесь с правилами. /rules"); } await Bot.SendTextMessageAsync(Chat.Id, string.Format(reply.ToString(), membersHtml), parseMode: ParseMode.Html, replyToMessageId: message.MessageId); } }