Esempio n. 1
0
 private async Task OnClientReady(DiscordClient sender, ReadyEventArgs e)
 {
     Console.WriteLine($"{BotName} is ready");
     await Task.CompletedTask;
 }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 private Task OnGuildAvailable(DiscordClient client, GuildCreateEventArgs e)
 {
     client.Logger.LogInformation(BotInventId, "Guild available: '{0}'", e.Guild.Name);
     return(Task.CompletedTask);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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);
            });
        }