/// <summary> /// No. /// </summary> /// <param name="message"></param> /// <returns></returns> private async Task VB(SocketMessage message) { await message.DeleteAsync(); //Delete their message about shit game var authBuilder = new EmbedAuthorBuilder() { Name = $"Hey there {message.Author.Username}!", IconUrl = message.Author.GetAvatarUrl(), }; var builder = new EmbedBuilder() { Author = authBuilder, Title = $"Please no...", //ThumbnailUrl = "https://www.tophattwaffle.com/wp-content/uploads/2017/11/1024_png-300x300.png", Color = new Color(243, 128, 72), Description = $"I saw you posted about Velocity Brawl. How about we do not do that." }; await message.Channel.SendMessageAsync("", false, builder); await DataBaseUtil.AddShitpostAsync("VB", message); }
/// <summary> /// Suggests WWMT over Propper /// </summary> /// <param name="message"></param> /// <returns></returns> private async Task Propper(SocketMessage message) { var authBuilder = new EmbedAuthorBuilder() { Name = $"Hey there {message.Author.Username}!", IconUrl = message.Author.GetAvatarUrl(), }; var builder = new EmbedBuilder() { Author = authBuilder, Title = $"Click here to go to the WallWorm site!", Url = "https://dev.wallworm.com/", ThumbnailUrl = "https://www.tophattwaffle.com/wp-content/uploads/2017/12/worm_logo.png", Color = new Color(243, 128, 72), Description = $"I saw you were asking about propper. While Propper still works, it's advised to learn " + $"a better modeling solution. The preferred method for Source Engine is using 3dsmax with WallWorm Model Tools" + $" If you don't want to learn 3dsmax and WWMT, you can learn to configure propper at the link below.: " + $"\n\nhttps://www.tophattwaffle.com/configuring-propper-for-steampipe/" }; await message.Channel.SendMessageAsync("", false, builder); await DataBaseUtil.AddShitpostAsync("Propper", message); }
/// <summary> /// Tells users how to pack custom content. /// </summary> /// <param name="message"></param> /// <returns></returns> private async Task HowToPack(SocketMessage message) { var authBuilder = new EmbedAuthorBuilder() { Name = $"Hey there {message.Author.Username}!", IconUrl = message.Author.GetAvatarUrl(), }; var builder = new EmbedBuilder() { Author = authBuilder, Title = $"Click here to learn how to use VIDE!", Url = "https://www.tophattwaffle.com/packing-custom-content-using-vide-in-steampipe/", ThumbnailUrl = "https://content.tophattwaffle.com/BotHATTwaffle/vide.png", Color = new Color(243, 128, 72), Description = $"I noticed you may be looking for information on how to pack custom content into your level. " + $"This is easily done using VIDE. Click the link above to download VIDE and learn how to use it." }; await message.Channel.SendMessageAsync("", false, builder); await DataBaseUtil.AddShitpostAsync("HowToPack", message); }
/// <summary> /// Nags users to not use pakrat. /// </summary> /// <param name="message"></param> /// <returns></returns> private async Task PakRat(SocketMessage message) { var authBuilder = new EmbedAuthorBuilder() { Name = $"Hey there {message.Author.Username}!", IconUrl = message.Author.GetAvatarUrl(), }; var builder = new EmbedBuilder() { Author = authBuilder, Title = $"Click here to learn how to use VIDE!", Url = "https://www.tophattwaffle.com/packing-custom-content-using-vide-in-steampipe/", ThumbnailUrl = "https://www.tophattwaffle.com/wp-content/uploads/2013/11/vide.png", Color = new Color(243, 128, 72), Description = "I was minding my own business when I heard you mention something about PakRat. " + "Don't know if you know this, but PakRat is super old and has been know to cause issues in newer games. " + "There is a newer program that handles packing better called VIDE. You should check that out instead." }; await message.Channel.SendMessageAsync("", false, builder); await DataBaseUtil.AddShitpostAsync("PakRat", message); }
/// <summary> /// Shames users for asking about carve. /// </summary> /// <param name="message"></param> /// <returns></returns> private async Task Carve(SocketMessage message) { var authBuilder = new EmbedAuthorBuilder() { Name = $"Hey there {message.Author.Username}!", IconUrl = message.Author.GetAvatarUrl(), }; var builder = new EmbedBuilder() { Author = authBuilder, Title = $"DO NOT USE CARVE", //ThumbnailUrl = "https://www.tophattwaffle.com/wp-content/uploads/2017/11/1024_png-300x300.png", Color = new Color(243, 128, 72), Description = $"You were asking about carve. We don't use carve here. Not only does it create bad brushwork, but it " + $"can also cause Hammer to stop responding and crash. If you're here trying to defend using carve, just stop - you are wrong." }; await message.Channel.SendMessageAsync("", false, builder); await DataBaseUtil.AddShitpostAsync("Carve", message); }
/// <summary> /// This is used to scan each message for less important things. /// Mostly used for shit posting, but also does useful things like nag users /// to use more up to date tools, or automatically answer some simple questions. /// </summary> /// <param name="message">Message that got us here</param> /// <returns></returns> internal async Task Listen(SocketMessage message) { if (message.Content.StartsWith("BOT_KEY-A2F3D6")) { await message.DeleteAsync(); var msgSplit = message.Content.Split('|'); /*msgSplit Layout * 0 - BotKey to get here * 1 - Discord user * 2 - Test type * 3 - Workshop URL * 4 - Map images */ var splitUser = msgSplit[1].Split('#'); try { //Try to tag await message.Channel.SendMessageAsync($"New Playtest Request Submitted by {_client.GetUser(splitUser[0], splitUser[1]).Mention}, check it out!"); } catch { //Can't tag await message.Channel.SendMessageAsync($"New Playtest Request Submitted by {msgSplit[1]}, check it out!"); } await _wsItem.HandleWorkshopEmbeds(message, msgSplit[4], msgSplit[2]); return; } //If the message is from a bot, dont process shitposts if (message.Author.IsBot) { return; } //Is a shit post. if (CanShitPost()) { if (message.Content.StartsWith("I'm", StringComparison.OrdinalIgnoreCase) && message.Content.Length > 5) { //20% chance to shitpost. if (_random.Next(5) != 1) { return; } await message.Channel.SendMessageAsync($"Hi {message.Content.Substring(3).Trim()}, I'm BotHATTwaffle."); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); await DataBaseUtil.AddShitpostAsync("Dad Joke", message); return; } if (message.Content.Contains(":KMS:") || message.Content.Contains(":ShootMyself:") || message.Content.Contains(":HangMe:")) { var builder = new EmbedBuilder() { ThumbnailUrl = "https://content.tophattwaffle.com/BotHATTwaffle/doit.jpg", }; await message.Channel.SendMessageAsync("", false, builder); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); await DataBaseUtil.AddShitpostAsync("KMS", message); return; } if (message.Content.ToLower().Contains("who is daddy") || message.Content.ToLower().Contains("who is tophattwaffle")) { await message.Channel.SendMessageAsync("TopHATTwaffle my daddy."); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); await DataBaseUtil.AddShitpostAsync("Daddy", message); return; } if (message.Content.ToLower().Contains("sudo make me a sandwich")) { await message.Channel.SendMessageAsync("ok."); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); await DataBaseUtil.AddShitpostAsync("Sandwich", message); return; } if (message.Content.ToLower().Contains("execute order 66")) { await message.Channel.SendMessageAsync("Yes my lord."); await message.Author.SendMessageAsync("Master Skywalker, there are too many of them. What are we going to do?"); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); await DataBaseUtil.AddShitpostAsync("Order 66", message); return; } if (_dataService.VbEavesDrop.Any(s => message.Content.ToLower().Contains(s))) { await VB(message); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); return; } } //Is a shit post. if (message.Content.Equals("^") && _dataService.ShitpostAgreeReplies.Any() && (_dataService.ShitpostAgreeUserIds.Contains(message.Author.Id) || ((SocketGuildUser)message.Author).Roles.Contains(_dataService.PatreonsRole) || ((SocketGuildUser)message.Author).Roles.Contains(_dataService.ModRole))) { await message.Channel.SendMessageAsync( _dataService.ShitpostAgreeReplies.ElementAt(_random.Next(0, _dataService.ShitpostAgreeReplies.Count))); await DataBaseUtil.AddShitpostAsync("^", message); return; } if (_dataService.PakRatEavesDrop.Any(s => message.Content.ToLower().Contains(s))) { await PakRat(message); return; } if (_dataService.HowToPackEavesDrop.Any(s => message.Content.ToLower().Contains(s))) { await HowToPack(message); return; } if (CanShitPost()) { if (_dataService.CarveEavesDrop.Any(s => message.Content.ToLower().Contains(s))) { await Carve(message); _canShitPost = DateTime.Now.AddMinutes(_dataService.ShitPostDelay); return; } } if (_dataService.PropperEavesDrop.Any(s => message.Content.ToLower().Contains(s))) { await Propper(message); return; } await _wsItem.HandleWorkshopEmbeds(message); }