private async Task OnClientReady(DiscordClient sender, ReadyEventArgs e) { Console.WriteLine($"{BotName} is ready"); await Task.CompletedTask; }
private async Task OnMessageCreated(DiscordClient sender, MessageCreateEventArgs e) { Console.WriteLine($"{e.Guild.Name}/#{e.Channel.Name.TrimStart("Channel".ToCharArray())}/{e.Author.Username}: {e.Message.Content}"); await Task.CompletedTask; }
private Task OnGuildAvailable(DiscordClient client, GuildCreateEventArgs e) { client.Logger.LogInformation(BotInventId, "Guild available: '{0}'", e.Guild.Name); return(Task.CompletedTask); }
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); }
public Bot() { if (!File.Exists("config.json")) { new Config().SaveToFile("config.json"); #region !! Report to user that config has not been set yet !! (aesthetics) Console.BackgroundColor = ConsoleColor.Red; Console.ForegroundColor = ConsoleColor.Black; WriteCenter("▒▒▒▒▒▒▒▒▒▄▄▄▄▒▒▒▒▒▒▒", 2); WriteCenter("▒▒▒▒▒▒▄▀▀▓▓▓▀█▒▒▒▒▒▒"); WriteCenter("▒▒▒▒▄▀▓▓▄██████▄▒▒▒▒"); WriteCenter("▒▒▒▄█▄█▀░░▄░▄░█▀▒▒▒▒"); WriteCenter("▒▒▄▀░██▄░░▀░▀░▀▄▒▒▒▒"); WriteCenter("▒▒▀▄░░▀░▄█▄▄░░▄█▄▒▒▒"); WriteCenter("▒▒▒▒▀█▄▄░░▀▀▀█▀▒▒▒▒▒"); WriteCenter("▒▒▒▄▀▓▓▓▀██▀▀█▄▀▀▄▒▒"); WriteCenter("▒▒█▓▓▄▀▀▀▄█▄▓▓▀█░█▒▒"); WriteCenter("▒▒▀▄█░░░░░█▀▀▄▄▀█▒▒▒"); WriteCenter("▒▒▒▄▀▀▄▄▄██▄▄█▀▓▓█▒▒"); WriteCenter("▒▒█▀▓█████████▓▓▓█▒▒"); WriteCenter("▒▒█▓▓██▀▀▀▒▒▒▀▄▄█▀▒▒"); WriteCenter("▒▒▒▀▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒"); Console.BackgroundColor = ConsoleColor.Yellow; WriteCenter("WARNING", 3); Console.ResetColor(); WriteCenter("Thank you Mario!", 1); WriteCenter("But our config.json is in another castle!"); WriteCenter("(Please fill in the config.json that was generated.)", 2); WriteCenter("Press any key to exit..", 1); Console.SetCursorPosition(0, 0); Console.ReadKey(); #endregion Environment.Exit(0); } this._config = Config.LoadFromFile("config.json"); _client = new DiscordClient(new DiscordConfiguration() { AutoReconnect = true, EnableCompression = true, LogLevel = LogLevel.Debug, Token = _config.Token, TokenType = TokenType.Bot, UseInternalLogHandler = true }); _interactivity = _client.UseInteractivity(new InteractivityConfiguration() { PaginationBehaviour = TimeoutBehaviour.Delete, PaginationTimeout = TimeSpan.FromSeconds(30), Timeout = TimeSpan.FromSeconds(30) }); _starttimes = new StartTimes() { BotStart = DateTime.Now, SocketStart = DateTime.MinValue }; _cts = new CancellationTokenSource(); DependencyCollection dep = null; using (var d = new DependencyCollectionBuilder()) { d.AddInstance(new Dependencies() { Interactivity = this._interactivity, StartTimes = this._starttimes, Cts = this._cts }); dep = d.Build(); } _cnext = _client.UseCommandsNext(new CommandsNextConfiguration() { CaseSensitive = false, EnableDefaultHelp = true, EnableDms = false, EnableMentionPrefix = true, StringPrefix = _config.Prefix, IgnoreExtraArguments = true, Dependencies = dep }); _cnext.RegisterCommands <Commands.Owner>(); _cnext.RegisterCommands <Commands.Interactivity>(); _client.Ready += OnReadyAsync; }
public EvilBot() { discord = new DiscordClient(x => { x.LogLevel = LogSeverity.Info; x.LogHandler = Log; }); discord.UsingCommands(x => { x.PrefixChar = '`'; x.AllowMentionPrefix = true; }); CommandService commands; commands = discord.GetService <CommandService>(); //---------------------------------------Show me what you got--------------------------------- freshestMemes = new string[] { "mem/test.jpg", "mem/GetInBich.jpg", "mem/rompers.jpg", "mem/dwk.jpg", "mem/abortion.jpg", "mem/prayer.jpg", "mem/sasuke_patrick.jpg" }; commands.CreateCommand("show me what you got") .Do(async(e) => { Random rand = new Random(); int temp = rand.Next(0, freshestMemes.Length); await e.Channel.SendMessage("Here is meme #" + temp + "/" + freshestMemes.Length); await e.Channel.SendFile(freshestMemes[temp]); }); //----------------------------------Text Commands------------------------------ commands.CreateCommand("hello") .Do(async(e) => { await e.Channel.SendMessage("Hi Bitch!"); }); commands.CreateCommand("help") .Do(async(e) => { await e.Channel.SendMessage("Do I look like the kind of bot that gives help?"); }); commands.CreateCommand("help") .Do(async(e) => { await e.Channel.SendMessage("Do I look like the kind of bot that gives help?"); }); discord.ExecuteAndWait(async() => { await discord.Connect("MzE4NTk4NzE4MTYzMjU1Mjk4.DDISOw.s3-TBtxlDop7KUMx3N7O6s2rMAY", TokenType.Bot); }); }