static void Main(string[] args) { System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + @"Music\"); System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + @"Save\"); System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + @"lib\"); YDCbot myBot = new YDCbot(); }
public static void ExecuteCommands(MessageEventArgs e, string[] MessageArray) { if (EightBallArray == null) //checks if load text has ran yet { loadText(); } #region !flipcoin if (MessageArray[0].ToString().ToLower() == "!flipcoin") { //simple coin flip int flip = rnd.Next(0, 2); if (flip == 0) { e.Channel.SendMessage(e.User.Mention + " ` " + " Flipped a coin and it landed Heads up!" + " `"); } if (flip == 1) { e.Channel.SendMessage(e.User.Mention + " ` " + " Flipped a coin and it landed Tails up!" + " `"); } } #endregion #region !ban if (MessageArray[0].ToLower() == "!ban") { //setup for starting a vote ban string ReportedPlayer = ""; string PlayerReporting = ""; IEnumerable <User> ReportedUsers; IEnumerable <User> OnlineUsers; bool matchedplayer = false; PlayerReporting = e.User.Name; OnlineUsers = e.Server.Users; int countUsers = 0; if (MessageArray.Length > 1) { for (int i = 1; i < MessageArray.Length; i++) { if (i > 1) { ReportedPlayer = ReportedPlayer + " " + MessageArray[i]; } else { ReportedPlayer = ReportedPlayer + MessageArray[i]; } } foreach (User user in OnlineUsers) { if (user.Status == UserStatus.Online && user.Id != BotID) { countUsers = countUsers + 1; } } if (e.Server.FindUsers(ReportedPlayer, true) != null) { ReportedUsers = e.Server.FindUsers(ReportedPlayer, true); if (e.User.Roles.Contains(Mod) && false) { foreach (User user in ReportedUsers) { if (!user.HasRole(Mod)) { var AsyncClass = new AsyncAwait(); #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed AsyncClass.BanUser(user, e); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed admins.SendMessage("`" + "The user " + ReportedPlayer + " was banned by " + e.User.Name + "`"); matchedplayer = false; } } } else if (countUsers > 3) { if (lastplayerReported == "") { foreach (User user in ReportedUsers) { if (user.Name == ReportedPlayer && !user.HasRole(Mod)) { matchedplayer = true; } } if (matchedplayer == true) { YDCbot.StartBanTimer(); e.User.SendMessage("New Ban starting now! Vote ends in 5 minutes."); lastplayerReported = ReportedPlayer; ListofReporters.Add(PlayerReporting); } else { e.User.SendMessage("No user found by that name!"); } } else if (lastplayerReported == ReportedPlayer) { if (ListofReporters.Contains(PlayerReporting)) { e.User.SendMessage("Can only Report Once"); } else { ListofReporters.Add(PlayerReporting); int countReports = ListofReporters.Count; e.User.SendMessage("Petition added total count " + countReports + " out of " + countUsers / 2 + " votes needed."); if (countReports >= countUsers / 2) { foreach (User user in ReportedUsers) { var AsyncClass = new AsyncAwait(); #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed AsyncClass.BanUser(user, e); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed YDCbot.StopBanTimer(); } foreach (string reporter in ListofReporters) { admins.SendMessage("`" + "The user " + ReportedPlayer + " was banned by " + reporter + "`"); } ListofReporters.Clear(); lastplayerReported = ""; } } } else { e.User.SendMessage("There is already a vote to ban on someone else!"); } } else { e.User.SendMessage("There must be more than 4 players online to ban someone"); } } } else { e.User.SendMessage("You must enter a name to report a player"); } } #endregion #region !8ball if (MessageArray[0].ToLower() == "!8ball") { //asks the 8ball a question, then sends the response back into the chat int value; if (MessageArray.Length > 1) { value = rnd.Next(0, EightBallArray.Length); e.Channel.SendMessage(e.User.Mention + "` asked " + e.Message.Text + "--The Eightball:" + EightBallArray[value] + " `"); } else { e.User.SendMessage("You must ask the 8ball something"); } } #endregion #region !roll if (e.Message.Text.ToLower().Contains("!roll")) { int value; if (MessageArray[0].ToLower() == "!roll") { if (isRoleTimerActive && !e.Message.Channel.IsPrivate) { if (MessageArray.Length > 1) { if (MessageArray[1].ToLower() == "end") { if (e.User == RoleStarter || e.User.HasRole(Mod)) { YDCbot.StopRollTimer(); } } } else if (!RolePlayers.Contains(e.User.Name)) { int roll = rnd.Next(1, Rolevalue + 1); e.Channel.SendMessage(e.User.Mention + " ` " + "Rolled a " + roll + " out of " + Rolevalue + "`"); RolePlayers.Add(e.User.Name); RoleScores.Add(roll); } return; } else if (MessageArray.Length > 1 && !isRoleTimerActive) { if (MessageArray[1].ToLower() == "start" && !isRoleTimerActive && !e.Message.Channel.IsPrivate) { YDCbot.StartRollTimer(); isRoleTimerActive = true; RoleCh = e.Channel; RoleStarter = e.User; if (MessageArray.Length > 2) { bool isSuccess = int.TryParse(MessageArray[2], out value); if (isSuccess == true) { value = Math.Abs(value); Rolevalue = value; if (value <= 1000000) { int roll = rnd.Next(1, value + 1); e.Channel.SendMessage(e.User.Mention + " ` " + "Started a roll for the next 60 seconds and then rolled " + roll + " out of " + value + "`"); RolePlayers.Add(e.User.Name); RoleScores.Add(roll); } else { int roll = rnd.Next(1, 1000001); e.Channel.SendMessage(e.User.Mention + " ` " + "Started a roll for the next 60 seconds and then rolled " + roll + " out of " + 1000000 + "`"); RolePlayers.Add(e.User.Name); RoleScores.Add(roll); } } } else { Rolevalue = 100; int roll = rnd.Next(1, 101); e.Channel.SendMessage(e.User.Mention + " ` " + "Started for the next 60 seconds a roll and then rolled " + roll + " out of " + 100 + "`"); RolePlayers.Add(e.User.Name); RoleScores.Add(roll); } } else { bool isSuccess = int.TryParse(MessageArray[1], out value); if (isSuccess == true) { value = Math.Abs(value); if (value <= 1000000) { int roll = rnd.Next(1, value); e.Channel.SendMessage(e.User.Mention + " ` " + "Rolled a " + roll + " out of " + value + "`"); } else { int roll = rnd.Next(1, 1000001); e.Channel.SendMessage(e.User.Mention + " ` " + "Rolled a " + roll + " out of " + 1000000 + "`"); } } } } else if (!isRoleTimerActive) { int roll = rnd.Next(1, 101); e.Channel.SendMessage(e.User.Mention + " ` " + "Rolled a " + roll + " out of 100" + "`"); } } } #endregion #region !raffle if (MessageArray[0].ToLower() == "!raffle" && !e.Channel.IsPrivate) { int value; IEnumerable <User> OnlineUsers; OnlineUsers = e.Server.Users; int timerV = 1; int v; int length = MessageArray.Length; if (length > 1) { if (MessageArray[1].ToLower() == "end" && isRaffleTimerActive && e.User == RaffleStarter) { YDCbot.StopRaffleTimer(); } else if (MessageArray[1].ToLower() == "online" && !isRaffleTimerActive) { foreach (User user in OnlineUsers) { if (user.Status == UserStatus.Online && user.Id != BotID) { raffleList.Add(user.Name); } } value = raffleList.Count(); int ind = rnd.Next(0, value); e.Channel.SendMessage(" ` " + " The winner of the raffle was " + raffleList[ind] + "`"); raffleList.Clear(); } else if (MessageArray[1].ToLower() == "signup" && !isRaffleTimerActive) { if (length > 2) { bool isSuccess = int.TryParse(MessageArray[3], out v); timerV = v; } else { timerV = 5; } e.Channel.SendMessage(e.User.Name + " ` " + " Has started a raffle for the next " + timerV + " minutes. If you would like to enter type !raffle" + "`"); isRaffleTimerActive = true; RaffleStarter = e.User; RaffleCh = e.Channel; YDCbot.StartRaffleTimer(timerV); } else if (MessageArray[1].ToLower() == "group" && length > 2 && !isRaffleTimerActive) { if (MessageArray[2].ToLower() == "member") { foreach (User user in OnlineUsers) { if (user.HasRole(Member) && user.Status == UserStatus.Online) { raffleList.Add(user.Name); } } value = raffleList.Count(); int ind = rnd.Next(0, value); e.Channel.SendMessage(Member.Mention + " ` " + " The winner of the raffle was " + raffleList[ind] + "`"); raffleList.Clear(); } if (MessageArray[2].ToLower() == "mod") { foreach (User user in OnlineUsers) { if (user.HasRole(Mod) && user.Status == UserStatus.Online) { raffleList.Add(user.Name); } } value = raffleList.Count(); int ind = rnd.Next(0, value); e.Channel.SendMessage(Mod.Mention + " ` " + " The winner of the raffle was " + raffleList[ind] + "`"); raffleList.Clear(); } if (MessageArray[2].ToLower() == "hasrole") { foreach (User user in OnlineUsers) { if (user.Status == UserStatus.Online) { if (user.HasRole(Mod) || user.HasRole(Member)) { raffleList.Add(user.Name); } } } value = raffleList.Count(); int ind = rnd.Next(0, value); e.Channel.SendMessage(Mod.Mention + Member.Mention + " ` " + " The winner of the raffle was " + raffleList[ind] + "`"); raffleList.Clear(); } } else { e.User.SendMessage("There is already an active Raffle!"); } } else if (isRaffleTimerActive) { if (!raffleList.Contains(e.User.Name)) { raffleList.Add(e.User.Name); } else { e.User.SendMessage("You are already entered into the raffle!"); } } else { e.User.SendMessage("Currently there is no active raffle."); } } #endregion #region !Imgur if (MessageArray[0].ToLower() == "!imgur") { string Reddit; int number = 0; if (MessageArray.Length > 3) { e.User.SendMessage("Format is /imgur Subreddit ImageNumber"); } else if (MessageArray.Length > 2) { Reddit = MessageArray[1].ToString(); bool isSuccess = int.TryParse(MessageArray[2], out number); if (!e.Channel.IsPrivate) { admins.SendMessage("`" + e.User.Name.ToString() + " posted an image from r/" + Reddit + " in the " + e.Channel.Name.ToString() + " Channel" + "`"); } ImgurBot.ImgurUpdate(Reddit, number, e); } else if (MessageArray.Length > 1) { Reddit = MessageArray[1].ToString(); if (!e.Channel.IsPrivate) { admins.SendMessage("`" + e.User.Name.ToString() + " posted an image from r/" + Reddit + " in the " + e.Channel.Name.ToString() + " Channel" + "`"); } ImgurBot.ImgurUpdate(Reddit, number, e); } else { e.User.SendMessage("Please enter a subreddit to Imgur"); } } #endregion #region !youtube if (MessageArray[0].ToLower() == "!youtube" && !e.Channel.IsPrivate) { if (MessageArray[1].ToLower() == "stop" && e.User.HasRole(Mod)) { e.User.SendMessage("Music Stopping!"); MusicPlayer.ExitLoop = true; } else { if (!MusicPlayer.IsPlaying) { MusicPlayer.ExitLoop = false; MusicPlayer.PlayYouTube(MessageArray[1], e); } else { e.User.SendMessage("Music is already playing!"); } } } #endregion #region !help if (e.Message.Text.ToLower().Contains("!help")) { e.Message.Delete(); e.User.SendMessage("```" + helptext + "```"); } #endregion }