public async Task <ActionResult> DeleteConfirmed(int id) { GlobalBan globalBan = await db.GlobalBans.FindAsync(id); db.GlobalBans.Remove(globalBan); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit([Bind(Include = "Id,TelegramId,Reason,Expires,BannedBy,BanDate,Name")] GlobalBan globalBan) { if (ModelState.IsValid) { db.Entry(globalBan).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(globalBan)); }
public async Task <ActionResult> Create([Bind(Include = "Id,TelegramId,Reason,Expires,BannedBy,BanDate,Name")] GlobalBan globalBan) { if (ModelState.IsValid) { db.GlobalBans.Add(globalBan); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(globalBan)); }
// GET: GlobalBans/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } GlobalBan globalBan = await db.GlobalBans.FindAsync(id); if (globalBan == null) { return(HttpNotFound()); } return(View(globalBan)); }
private static bool IsQueueable(string orderString, ulong id, out string msg) { if (!TwitchCrossBot.Bot.Config.AcceptingCommands || TwitchCrossBot.Bot.Config.SkipConsoleBotCreation) { msg = "Sorry, I am not currently accepting queue requests!"; return(false); } if (string.IsNullOrWhiteSpace(orderString)) { msg = "No valid order text."; return(false); } if (GlobalBan.IsBanned(id.ToString())) { msg = "You have been banned for abuse. Order has not been accepted."; return(false); } msg = string.Empty; return(true); }
public static void PermBan(Update u, string[] args) { foreach (var e in u.Message.Entities) { switch (e.Type) { case MessageEntityType.Mention: //get user var username = u.Message.Text.Substring(e.Offset + 1, e.Length - 1); using (var db = new WWContext()) { var player = db.Players.FirstOrDefault(x => x.UserName == username); if (player != null) { var game = Bot.GetGroupNodeAndGame(u.Message.Chat.Id); game?.SmitePlayer(player.TelegramId); //add the ban var ban = new GlobalBan { Expires = (DateTime)SqlDateTime.MaxValue, Reason = args[1].Split(' ').Skip(1).Aggregate((a, b) => a + " " + b), //skip the players name TelegramId = player.TelegramId, BanDate = DateTime.Now, BannedBy = u.Message.From.FirstName, Name = player.Name }; db.GlobalBans.Add(ban); UpdateHandler.BanList.Add(ban); db.SaveChanges(); Send("User has been banned", u.Message.Chat.Id); } } break; case MessageEntityType.TextMention: using (var db = new WWContext()) { var player = db.Players.FirstOrDefault(x => x.TelegramId == e.User.Id); if (player != null) { var game = Bot.GetGroupNodeAndGame(u.Message.Chat.Id); game?.SmitePlayer(player.TelegramId); //add the ban var ban = new GlobalBan { Expires = (DateTime)SqlDateTime.MaxValue, Reason = args[1].Split(' ').Skip(1).Aggregate((a, b) => a + " " + b), //skip the players name TelegramId = player.TelegramId, BanDate = DateTime.Now, BannedBy = u.Message.From.FirstName, Name = player.Name }; db.GlobalBans.Add(ban); UpdateHandler.BanList.Add(ban); db.SaveChanges(); Send("User has been banned", u.Message.Chat.Id); } } break; } } if (args.Length < 2 || String.IsNullOrEmpty(args[1])) { return; } //now check for ids var toBan = new List <int>(); var did = 0; var banReason = ""; foreach (var arg in args[1].Split(' ')) { if (int.TryParse(arg, out did)) { toBan.Add(did); } else { banReason += arg + " "; } } banReason = banReason.Trim(); if (toBan.Count > 0) { foreach (var uid in toBan) { using (var db = new WWContext()) { var player = db.Players.FirstOrDefault(x => x.TelegramId == uid); if (player != null) { var game = Bot.GetGroupNodeAndGame(u.Message.Chat.Id); game?.SmitePlayer(player.TelegramId); //add the ban var ban = new GlobalBan { Expires = (DateTime)SqlDateTime.MaxValue, Reason = args[1].Split(' ').Skip(1).Aggregate((a, b) => a + " " + b), //skip the players name TelegramId = player.TelegramId, BanDate = DateTime.Now, BannedBy = u.Message.From.FirstName, Name = player.Name }; db.GlobalBans.Add(ban); UpdateHandler.BanList.Add(ban); db.SaveChanges(); Send($"User {player.Name} (@{player.UserName}) has been banned", u.Message.Chat.Id); } } } } }
private static void CheckMessages() { for (int i = 0; i < Math.Min(100, mQueue.Count); i++) { var m = mQueue.Dequeue(); if (Commands.ContainsKey(m.From.Id)) { Commands[m.From.Id].Add(m); } else { Commands.Add(m.From.Id, new List <Message> { m }); } } var top = Commands.Where(x => x.Value.Count > 15).OrderByDescending(x => x.Value.Count).Select(x => x.Value).ToList(); var menu = new Menu(2); Dictionary <int, bool> ToBan = new Dictionary <int, bool>(); using (var sw = new StreamWriter("log.log")) { foreach (var t in top) { var user = t[0].From; var startTime = t[0].Date; var endTime = t[t.Count - 1].Date; var ticks = (endTime - startTime).Ticks; ticks /= t.Count; var avg = new TimeSpan(ticks); var msg = ($"User @{user.Username} ({user.Id}): {t.Count} - Average time between commands: {avg}\r\n"); msg = t.Aggregate(msg, (a, b) => a + $"{b.Text}: {b.Date}\r\n"); msg += "\r\n"; sw.WriteLine(msg); Console.WriteLine(msg); ToBan.Add(user.Id, t.Count >= 40); // if it's 40 or more messages, ban permanently immediately menu.Buttons.Add(InlineKeyboardButton.WithCallbackData($"{user.Id}: {t.Count}", user.Id.ToString())); } } if (menu.Buttons.Count > 0) { using (var db = new WWContext()) { foreach (var spam in ToBan) { var id = spam.Key; var permanent = spam.Value; var player = db.Players.FirstOrDefault(x => x.TelegramId == id); if (player != null) { if (player.TempBanCount == null) { player.TempBanCount = 0; } permanent = ++player.TempBanCount > 3 || permanent; } var globalban = db.GlobalBans.FirstOrDefault(x => x.TelegramId == id); if (globalban != null) { if (globalban.Expires > new DateTime(3000, 1, 1)) { continue; // ignore if alr perm banned } db.GlobalBans.Remove(globalban); // else, remove the old ban so the new one counts. } //add the ban var ban = new GlobalBan { Expires = permanent ? (DateTime)SqlDateTime.MaxValue : DateTime.UtcNow.AddDays(7), Reason = $"{(spam.Value ? "INSANE" : "HEAVY")} Spam / Flood", TelegramId = id, BanDate = DateTime.UtcNow, BannedBy = "AntiFlood System", Name = player?.Name ?? "Unknown User" }; db.GlobalBans.Add(ban); } db.SaveChanges(); } menu.Buttons.Add(InlineKeyboardButton.WithCallbackData("Close", "close")); Api.SendTextMessageAsync(DevGroup, "Here is the report:", replyMarkup: menu.CreateMarkupFromMenu()); using (var fs = new FileStream("log.log", FileMode.Open)) { try { Api.SendDocumentAsync(DevGroup, new InputOnlineFile(fs, "Spam Log.txt")).Wait(); } catch (Exception exc) { var trace = exc.StackTrace; var error = ""; do { error += exc.Message + "\n\n"; exc = exc.InnerException; }while (exc != null); Api.SendTextMessageAsync(DevGroup, error + trace).Wait(); } } } }