示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }