static Task ClientTask(DiscordClient client) { return(Task.Run(() => { Console.WriteLine("WELCOME TO DISCORD BOT" + "\n============================="); // voice messages client.MessageReceived += (sender, e) => { // Joining a voice channel if (e.message.content.StartsWith("!joinvoice")) { string[] split = e.message.content.Split(new char[] { ' ' }, 2); if (!String.IsNullOrEmpty(split[1])) { DiscordChannel toJoin = e.Channel.parent.channels.Find(x => (x.Name.ToLower() == split[1].ToLower()) && (x.Type == ChannelType.Voice)); if (toJoin != null) { DiscordVoiceConfig voiceCfg = new DiscordVoiceConfig() { Bitrate = null, Channels = 1, FrameLengthMs = 60, OpusMode = Discord.Audio.Opus.OpusApplication.LowLatency, SendOnly = false }; audio = new AudioPlayer(voiceCfg); client.ConnectToVoiceChannel(toJoin); } } } else if (e.message.content.StartsWith("!addsong")) { string[] split = e.message.content.Split(new char[] { ' ' }, 3); if (split.Count() >= 3 && !String.IsNullOrEmpty(split[1]) && !String.IsNullOrEmpty(split[2])) { DoVoiceURL(client.GetVoiceClient(), split[1], split[2]); } else { client.SendMessageToChannel("Incorrect add song syntax.", e.Channel); } } else if (e.message.content.StartsWith("!play")) { string[] split = e.message.content.Split(new char[] { ' ' }, 2); if (File.Exists(split[1])) { DoVoiceMP3(client.GetVoiceClient(), split[1]); } else { client.SendMessageToChannel("Song does not exist.", e.Channel); } } else if (e.message.content.StartsWith("!disconnect")) { client.DisconnectFromVoice(); } }; // other messages client.MessageReceived += (sender, e) => { Console.WriteLine($"[" + e.Channel.Name.ToString() + "] " + e.message.author.Username + ": " + e.message.content.ToString()); if (e.Channel.Name == "thatbelikeitis" || e.Channel.Name == "newtestchannel") { mainText = e.Channel; quoteMuseum = client.GetChannelByName("quotes"); } if (e.message.content.StartsWith("!help")) { string helpMsg = "Welcome to DiscordBot! The following commands are available:\n" + "help, hello, joinvoice [channelname], play [mp3 path], addsong [youtube url] [song name], roll [XdX] [+/-] [mod]"; client.SendMessageToChannel(helpMsg, e.Channel); } // Text detection if (e.message.content.Contains("Kappa") || e.message.content.Contains("kappa")) { client.SendMessageToChannel("We don't use that word here.", e.Channel); } else if (e.message.content.Contains("I'm back") || e.message.content.Contains("im back")) { client.SendMessageToChannel("I'm front", e.Channel); } else if (e.message.content.Contains("ryan") || e.message.content.Contains("Ryan") || e.message.content.Contains("jimmy")) { client.AttachFile(e.Channel, "", "jimmyneukong.jpg"); //client.SendMessageToChannel("ryan", e.Channel); } else if (e.message.content.Contains("f14")) { client.AttachFile(e.Channel, "", "f14.jpg"); } // Commands! if (e.message.content.StartsWith("!hello")) { client.SendMessageToChannel("Hello World!", e.Channel); } else if (e.message.content.StartsWith("!quote")) { string quote = GetRandomQuote(client); client.SendMessageToChannel(quote, e.Channel); } else if (e.message.content.StartsWith("!addquote")) { char[] newQuote = e.message.content.Skip(9).ToArray(); client.SendMessageToChannel(new string(newQuote), quoteMuseum); } else if (e.message.content.StartsWith("!roll")) { string[] split = e.message.content.Split(new char[] { ' ' }, 4); if (split.Count() >= 2 && !String.IsNullOrEmpty(split[1])) { string[] split2 = split[1].Split(new char[] { 'd' }, 2); int roll = 0; if (split.Count() >= 4 && !String.IsNullOrEmpty(split[2]) && !String.IsNullOrEmpty(split[3])) { if (split[2] == "+") { roll = Roll(Int32.Parse(split2[0]), Int32.Parse(split2[1]), Int32.Parse(split[3])); } else if (split[2] == "-") { roll = Roll(Int32.Parse(split2[0]), Int32.Parse(split2[1]), Int32.Parse(split[3]) * -1); } else { client.SendMessageToChannel("Can only mod by + or -! Result invalid.", e.Channel); } } else { roll = Roll(Int32.Parse(split2[0]), Int32.Parse(split2[1]), 0); } string msg = split2[0] + "d" + split2[1] + ": " + roll; client.SendMessageToChannel(msg, e.Channel); } else { client.SendMessageToChannel("Missing arguments!", e.Channel); } } else if (e.message.content.StartsWith("!chat")) { char[] chatMsg = e.message.content.Skip(6).ToArray(); string reply = chatBot.Think(new string(chatMsg)); Console.WriteLine(new string(chatMsg)); Console.WriteLine(reply); client.SendMessageToChannel(reply, e.Channel); } else if (e.message.content.StartsWith("!supersecretshutdowncommand")) { System.Environment.Exit(0); } }; client.Connected += (sender, e) => { Console.WriteLine($"Connected! User: {e.user.Username}"); }; client.Connect(); })); }