private void _WarnUser(TelegramBotClient client, Message msg, User user, int replyMessageId) { var member = BotDbContext.Get().GetMember(msg.Chat.Id, user.Id); member.Warns++; if (member.Warns >= 3) { _ban?.Invoke(client, msg.Chat, user, replyMessageId, DateTime.UtcNow + TimeSpan.FromDays(3)); } else { var text = $"{user.GetMension()} предупреждение №{member.Warns}!\n" + $"Бан при получении 3-х предупреждений!"; client.SendTextMessageAsync(msg.Chat.Id, text, Telegram.Bot.Types.Enums.ParseMode.Markdown, replyToMessageId: replyMessageId); BotDbContext.Get().Entry(member).State = System.Data.Entity.EntityState.Modified; BotDbContext.Get().SaveChanges(); } }
public override void Execute(TelegramBotClient client, Message msg) { string text = string.Empty; if (msg.ReplyToMessage != null) { text = msg.ReplyToMessage.Text; } else if (msg.Text.Contains("\n")) { text = msg.Text.Replace("/agreement\n", ""); } else { return; } var member = client.GetChatMemberAsync(msg.Chat.Id, msg.From.Id).Result; if (member.Status == ChatMemberStatus.Administrator || member.Status == ChatMemberStatus.Creator) { var agreement = BotDbContext.Get().Agreements.FirstOrDefault(a => a.ChatId.Equals(msg.Chat.Id)); if (agreement is null) { agreement = new Agreement() { Text = text,//msg.ReplyToMessage.Text, ChatId = msg.Chat.Id }; BotDbContext.Get().Agreements.Add(agreement); BotDbContext.Get().Entry(agreement).State = System.Data.Entity.EntityState.Added; BotDbContext.Get().SaveChangesAsync(); } else { agreement.Text = text; //msg.Text; BotDbContext.Get().Entry(agreement).State = System.Data.Entity.EntityState.Modified; BotDbContext.Get().SaveChangesAsync(); } client.SendTextMessageAsync(msg.Chat.Id, "Правила чата были изменены.", replyToMessageId: msg.MessageId); } }
public override void Execute(TelegramBotClient client, Message msg) { if (msg.Entities.Any(e => e.Type == MessageEntityType.Mention)) { for (int i = 0; i < msg.Entities.Length; i++) { var entity = msg.Entities[i]; if (entity.Type != MessageEntityType.Mention) { continue; } var user = entity.User; if (user != null) { _execute?.Invoke(client, msg.Chat, user, msg.MessageId); } else { var username = msg.EntityValues.ElementAt(i).Replace("@", ""); var userInfo = BotDbContext.Get().UserInfoes.FirstOrDefault(u => u.Username.Equals(username)); if (userInfo != null) { var chatMember = client.GetChatMemberAsync(msg.Chat.Id, userInfo.TelegramId).Result; user = chatMember.User; _execute?.Invoke(client, msg.Chat, user, msg.MessageId); } } } } else if (msg.ReplyToMessage != null) { var user = msg.ReplyToMessage.From; _execute?.Invoke(client, msg.Chat, user, msg.ReplyToMessage.MessageId); } else { client.SendTextMessageAsync(msg.Chat.Id, "Для выполнения команды необходимо указать пользователя " + "или командой ответить на сообщение пользователя", replyToMessageId: msg.MessageId); } }
public override void Handle(TelegramBotClient client, Message msg) { if (msg.Type == Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded) { var mentions = ""; bool first = true; foreach (var user in msg.NewChatMembers) { mentions += "[" + user.FirstName + "](tg://user?id=" + user.Id + ")"; if (!first) { mentions += ", "; } else { first = false; } _ban?.Invoke(client, msg.Chat, user, 0, default); BotDbContext.Get().GetUserInfo(user); // добавить информацию о юзере в базу } var button = new InlineKeyboardButton(); button.Text = "Принять"; button.CallbackData = Bot.ACCEPT_AGREEMENT_CALLBACK; var keyboard = new InlineKeyboardMarkup(button); string agreement = BotDbContext.Get().Agreements.FirstOrDefault(a => a.ChatId.Equals(msg.Chat.Id))?.Text; //WebConfigurationManager.AppSettings.Get("MemberAgreement"); agreement = agreement ?? "Я не в курсе о правилах чата, так что путь пользователь просто нажмет кнопку."; client.SendTextMessageAsync(msg.Chat.Id, $"{mentions}\n{agreement}", parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup: keyboard); } else { base.Handle(client, msg); } }
public override void Execute(TelegramBotClient client, Message msg) { int replyMsgId = msg.MessageId; User user = null; if (msg.ReplyToMessage != null) { user = msg.ReplyToMessage.From; replyMsgId = msg.ReplyToMessage.MessageId; } else if (msg.Entities.Any(e => e.Type == MessageEntityType.Mention)) { for (int i = 0; i < msg.Entities.Length; i++) { var entity = msg.Entities[i]; if (entity.Type != MessageEntityType.Mention) { continue; } user = entity.User; if (user is null) { var username = msg.EntityValues.ElementAt(i).Replace("@", ""); var userInfo = BotDbContext.Get().UserInfoes.FirstOrDefault(u => u.Username.Equals(username)); if (userInfo != null) { var chatMember = client.GetChatMemberAsync(msg.Chat.Id, userInfo.TelegramId).Result; user = chatMember.User; } } } } if (user != null) { _WarnUser(client, msg, user, replyMsgId); } }
public override void Handle(TelegramBotClient client, Message msg) { if (msg != null && msg.Type == Telegram.Bot.Types.Enums.MessageType.ChatMembersAdded) { var mentions = ""; bool first = true; foreach (var user in msg.NewChatMembers) { mentions += "[" + user.FirstName + "](tg://user?id=" + user.Id + ")"; if (!first) { mentions += ", "; } else { first = false; } _ban?.Invoke(client, msg.Chat, user, 0, default); BotDbContext.Get().GetUserInfo(user); // добавить информацию о юзере в базу } var button = new InlineKeyboardButton(); button.Text = "Принять"; button.CallbackData = Bot.ACCEPT_AGREEMENT_CALLBACK; var keyboard = new InlineKeyboardMarkup(button); string agreement = WebConfigurationManager.AppSettings.Get("MemberAgreement"); client.SendTextMessageAsync(msg.Chat.Id, $"{mentions}\n{agreement}", parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup: keyboard); } else if (msg != null && msg.Text != null && msg.Text.IndexOf("/welcome") >= 0) { if (msg.Entities is null) { var mentions = ""; for (int i = 1; i < msg.Entities.Length; i++) { if (msg.Entities[i].Type != Telegram.Bot.Types.Enums.MessageEntityType.Mention) { continue; } var user = msg.Entities[i].User; if (user == null) { var username = msg.EntityValues.ElementAt(i).Replace("@", ""); var userInfo = BotDbContext.Get().UserInfoes.FirstOrDefault(u => u.Username.Equals(username)); if (userInfo != null) { var chatMember = client.GetChatMemberAsync(msg.Chat.Id, userInfo.TelegramId).Result; user = chatMember.User; } else { continue; } } if (i > 0) { mentions += ", "; } mentions += "[" + user.FirstName + "](tg://user?id=" + user.Id + ")"; //user.BanInChat(client, msg.Chat.Id); BotDbContext.Get().GetUserInfo(user); // добавить информацию о юзере в базу } var button = new InlineKeyboardButton(); button.Text = "Принять"; button.CallbackData = Bot.ACCEPT_AGREEMENT_CALLBACK; var keyboard = new InlineKeyboardMarkup(button); string agreement = WebConfigurationManager.AppSettings.Get("MemberAgreement"); client.SendTextMessageAsync(msg.Chat.Id, $"{mentions}\n{agreement}", parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup: keyboard); } else if (msg.ReplyToMessage != null) { var user = msg.ReplyToMessage.From; // user.BanInChat(client, msg.Chat.Id); BotDbContext.Get().GetUserInfo(user); var button = new InlineKeyboardButton(); button.Text = "Принять"; button.CallbackData = Bot.ACCEPT_AGREEMENT_CALLBACK; var keyboard = new InlineKeyboardMarkup(button); string agreement = WebConfigurationManager.AppSettings.Get("MemberAgreement"); client.SendTextMessageAsync(msg.Chat.Id, $"{user.GetMension()}\n{agreement}", parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown, replyMarkup: keyboard); } else { client.SendTextMessageAsync(msg.Chat.Id, "Для выполнения команды необходимо указать пользователей чата.", replyToMessageId: msg.MessageId); return; } } else { base.Handle(client, msg); } }