public async Task <string> FormatXPAnswerTable(Rs3Player rs3Player, string format) { string HeaderName = ""; switch (rs3Player.Name.Length) { case 0: HeaderName = "+--------------------" + rs3Player.Name + "--------------------+"; break; case 1: HeaderName = "+-------------------" + rs3Player.Name + "--------------------+"; break; case 2: HeaderName = "+-------------------" + rs3Player.Name + "-------------------+"; break; case 3: HeaderName = "+------------------" + rs3Player.Name + "-------------------+"; break; case 4: HeaderName = "+------------------" + rs3Player.Name + "------------------+"; break; case 5: HeaderName = "+-----------------" + rs3Player.Name + "------------------+"; break; case 6: HeaderName = "+-----------------" + rs3Player.Name + "-----------------+"; break; case 7: HeaderName = "+-----------------" + rs3Player.Name + "----------------+"; break; case 8: HeaderName = "+----------------" + rs3Player.Name + "----------------+"; break; case 9: HeaderName = "+----------------" + rs3Player.Name + "---------------+"; break; case 10: HeaderName = "+---------------" + rs3Player.Name + "---------------+"; break; case 11: HeaderName = "+---------------" + rs3Player.Name + "--------------+"; break; case 12: HeaderName = "+--------------" + rs3Player.Name + "--------------+"; break; } string botAnswer = "``` " + HeaderName; if (format == "Gainz") { botAnswer += "\n " + lineSplit + "\n " + lineHeaderGainz + "\n " + lineSplit; } if (format == "Current") { botAnswer += "\n " + lineSplit + "\n " + lineHeaderCurre + "\n " + lineSplit; } foreach (skillvalues skillvalues in rs3Player.Skillvalues) { string line = "\n "; line += setTableLine(skillvalues); if (skillvalues.Name == "Overall") { line += "\n " + lineSplit; } botAnswer += line; } botAnswer += "\n " + lineSplit + "```"; return(botAnswer); }
static async Task MainAsync(string[] args) { DiscordConfiguration discordConfiguration = new DiscordConfiguration(); discordConfiguration.TokenType = TokenType.Bot; var discord = new DiscordClient(discordConfiguration); string BotAnswer = ""; discord.MessageCreated += async e => { if (e.Message.Content.ToLower().StartsWith("!SHW".ToLower())) { string message = e.Message.Content.ToLower(); message = message.Replace("!SHW".ToLower(), string.Empty); message = message.Trim(); if (message.ToLower().StartsWith("admin".ToLower())) { #region AdminCommands bool isAdmin = SqlFunctions.GetBotAdmins(e.Author.Id.ToString()); if (isAdmin) { message = message.Replace("admin".ToLower(), string.Empty); message = message.Trim(); if (message.ToLower().StartsWith("add_admin".ToLower())) { var mentionedUser = e.Message.MentionedUsers; foreach (DiscordUser discordUser in mentionedUser) { string response = SqlFunctions.AddBotAdmins(discordUser.Id.ToString()); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n " + discordUser.Username + response); } } if (message.ToLower().StartsWith("del_admin".ToLower())) { var mentionedUser = e.Message.MentionedUsers; foreach (DiscordUser discordUser in mentionedUser) { string response = SqlFunctions.DelBotAdmins(discordUser.Id.ToString()); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n " + discordUser.Username + response); } } if (message.ToLower().StartsWith("add_host".ToLower())) { var mentionedUser = e.Message.MentionedUsers; foreach (DiscordUser discordUser in mentionedUser) { string response = SqlFunctions.AddBotHosts(discordUser.Id.ToString()); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n " + discordUser.Username + response); } } if (message.ToLower().StartsWith("del_host".ToLower())) { var mentionedUser = e.Message.MentionedUsers; foreach (DiscordUser discordUser in mentionedUser) { string response = SqlFunctions.DelBotHosts(discordUser.Id.ToString()); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n " + discordUser.Username + response); } } } else { await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n You do Not Have Permissions to Use this Command"); } #endregion } else if (message.ToLower().StartsWith("host".ToLower())) { #region SkillingHostCommands bool isHost = SqlFunctions.GetBotHosts(e.Author.Id.ToString()); if (isHost) { message = message.Replace("host".ToLower(), string.Empty); message = message.Trim(); if (message.ToLower().StartsWith("new".ToLower())) { message = message.Replace("new", string.Empty).Trim(); string[] CompSettingArray = message.Split('-'); foreach (string str in CompSettingArray) { if (str.Contains("name")) { compSettings.Name = str.Split('"')[1]; } if (str.Contains("start")) { compSettings.start = str.Split('"')[1]; } if (str.Contains("end")) { compSettings.end = str.Split('"')[1]; } } if (compSettings.Name != null && compSettings.start != null && compSettings.end != null) { try { compSettings.status = "Awaiting"; string response = SqlFunctions.CreateSkillingComp(compSettings); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n Competition \"" + compSettings.Name + "\" " + response); } catch (Exception ex) { await e.Message.RespondAsync(ex + " " + ex.ToString()); } } else { await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n Missing Instructions make sure you've used the following syntax\n " + "!shw host new -name \"Skilling Name Super Here\" -start \"21/06/2020 12:00:00\" -end \"22/06/2020 00:00:00\""); } } } else { await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n You do Not Have Permissions to Use this Command"); } #endregion } else { #region UserCommands if (message.ToLower().StartsWith("commands".ToLower())) { Console.WriteLine(DateTime.Now + ": " + e.Message.Content); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n https://github.com/ShaggyHW/Rs3ServerSideXPTracker/blob/master/README.md"); } if (message.ToLower().StartsWith("stats".ToLower())) { Console.WriteLine(DateTime.Now + ": " + e.Message.Content); bool alreadyAnswered = false; string username = ""; if (e.MentionedUsers.Count() > 0) { username = SqlFunctions.GetLinkedAccount(e.MentionedUsers[0].Id.ToString()); } else { string[] mArray = message.Split(' '); for (int i = 1; i < mArray.Length; i++) { username += mArray[i] + " "; } username = username.Trim(); if (string.IsNullOrEmpty(username)) { username = SqlFunctions.GetLinkedAccount(e.Message.Author.Id.ToString()); } else { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n No Linked Account Please use \"!SHW link username\" to link your discord and RS3 account"); } } } if (string.IsNullOrEmpty(username)) { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n No Linked Account On Mentioned User! Please have him use \"!SHW link username\" to link his discord and RS3 account"); } } else { rs3Player = await functionsRS.GetCurrentStats(username); if (rs3Player.Error != null) { if (!string.IsNullOrEmpty(rs3Player.Error)) { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + rs3Player.Error + ""); } } else { AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Current"); int xy = BotAnswer.Length; if (!alreadyAnswered) { alreadyAnswered = true; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } } else { AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Current"); int xy = BotAnswer.Length; if (!alreadyAnswered) { alreadyAnswered = true; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } } } if (message.ToLower().StartsWith("link".ToLower())) { Console.WriteLine(DateTime.Now + ": " + e.Message.Content); string[] mArray = message.Split(' '); string username = ""; for (int i = 1; i < mArray.Length; i++) { username += mArray[i] + " "; } username = username.Trim(); rs3Player = await functionsRS.RegisterPlayer(username); if (rs3Player.Error != null) { if (!string.IsNullOrEmpty(rs3Player.Error)) { await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + rs3Player.Error + ""); } else { BotAnswer = JsonConvert.SerializeObject(rs3Player); AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Current"); int xy = BotAnswer.Length; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } else { SqlFunctions.CreateLink_DiscordAcc_Rs3Acc(username, e.Message.Author.Id.ToString()); Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + username + " Linked with discord account"); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + username + " Linked with discord account"); } } if (message.ToLower().StartsWith("new".ToLower())) { Console.WriteLine(DateTime.Now + ": " + e.Message.Content); string[] mArray = message.Split(' '); string username = ""; for (int i = 1; i < mArray.Length; i++) { username += mArray[i] + " "; } username = username.Trim(); var rs3Player = await functionsRS.RegisterPlayer(username); if (rs3Player.Error != null) { if (!string.IsNullOrEmpty(rs3Player.Error)) { await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + rs3Player.Error + ""); } else { BotAnswer = JsonConvert.SerializeObject(rs3Player); AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Current"); int xy = BotAnswer.Length; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } else { BotAnswer = JsonConvert.SerializeObject(rs3Player); AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Current"); int xy = BotAnswer.Length; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } if (message.ToLower().StartsWith("gains".ToLower())) { Console.WriteLine(DateTime.Now + ": " + e.Message.Content); message = message.ToLower().Replace("gains", string.Empty).Trim(); bool HasTimeParam = false; string TimeParam = ""; //!SHW GAINS -since "2020-06-23" ali the shag if (message.ToLower().StartsWith("-since")) { HasTimeParam = true; message = message.Replace("-since", string.Empty).Trim(); TimeParam = message.Split('"')[1]; message = message.Split('"')[2].Trim(); } bool alreadyAnswered = false; string username = ""; if (e.MentionedUsers.Count() > 0) { username = SqlFunctions.GetLinkedAccount(e.MentionedUsers[0].Id.ToString()); } else { string[] mArray = message.Split(' '); for (int i = 1; i < mArray.Length; i++) { username += mArray[i] + " "; } username = username.Trim(); if (string.IsNullOrEmpty(username)) { username = SqlFunctions.GetLinkedAccount(e.Message.Author.Id.ToString()); } else { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n No Linked Account Please use \"!SHW link username\" to link your discord and RS3 account"); } } } if (string.IsNullOrEmpty(username)) { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n No Linked Account On Mentioned User! Please have him use \"!SHW link username\" to link his discord and RS3 account"); } } else { if (HasTimeParam) { rs3Player = await functionsRS.CalculateSince(username, TimeParam); } else { rs3Player = await functionsRS.Calculate(username); } if (rs3Player.Error != null) { if (!string.IsNullOrEmpty(rs3Player.Error)) { if (!alreadyAnswered) { alreadyAnswered = true; await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + rs3Player.Error + ""); } } else { BotAnswer = JsonConvert.SerializeObject(rs3Player); AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Gainz"); int xy = BotAnswer.Length; if (!alreadyAnswered) { alreadyAnswered = true; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } } else { BotAnswer = JsonConvert.SerializeObject(rs3Player); AnswerFormats answerFormats = new AnswerFormats(); BotAnswer = await answerFormats.FormatXPAnswerTable(rs3Player, "Gainz"); int xy = BotAnswer.Length; if (!alreadyAnswered) { alreadyAnswered = true; Console.WriteLine("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer); await e.Message.RespondAsync("<@!" + e.Message.Author.Id + ">" + "\n" + BotAnswer + ""); } } } } #endregion } } }; await discord.ConnectAsync(); await Task.Delay(-1); }