Пример #1
0
        public UserState GetTargetUserState(CommandEventArgs e)
        {
            User usr = e.Channel.Users.FirstOrDefault(u => u.Name == e.GetArg("target"));

            if (usr != null)
            {
                if (Beta.UserStateRepository.VerifyUsersExists(usr.Id))
                {
                    var target = Beta.UserStateRepository.GetUserState(usr.Id);
                    if (target.RPGHitpoints == -1)
                    {
                        target.RPGHitpoints = target.RPGMaxHP;
                    }
                    return(target);
                }
            }
            if (Beta.UserStateRepository.VerifyNPCExists(e.GetArg("target")))
            {
                var target =
                    Beta.UserStateRepository.NPCUserStates.FirstOrDefault(nu => nu.UserName == e.GetArg("target"));
                Console.WriteLine("Target is null : " + (target == null));
                return(target);
            }
            return(null);
        }
Пример #2
0
        private async Task SearchDestinyPlayer(CommandEventArgs e)
        {
            try {
                e.Channel.SendIsTyping();

                MembershipType memtype;
                if (!ParsePlatform(e.GetArg("platform"), out memtype))
                {
                    await _client.ReplyError(e, "Invalid platform provided. Must be `psn` or `xbox`.");

                    return;
                }

                var bongi = await _bungie.SearchDestinyPlayer(memtype, e.GetArg("displayName"));

                var reply = new StringBuilder();
                foreach (var hit in bongi)
                {
                    reply.Append($"{hit.displayName}: {hit.membershipId}")
                    .AppendLine();
                }
                await e.Channel.SendMessage(reply.ToString());
            } catch (Exception ex) {
                Console.WriteLine(ex);
                await _client.ReplyError(e, ex);
            }
        }
Пример #3
0
        private async Task AddCommand(CommandEventArgs e)
        {
            e.Channel.SendIsTyping();
            var com = new CustomCommands.Command {
                CommandName    = e.GetArg("name"),
                CommandContent = e.GetArg("content"),
                CreatorId      = e.User.Id.ToString()
            };

            try {
                await _custom.AddCommand(com);

                commands = (await _custom.GetCommands()).ToList();
                await e.Channel.SendMessage($"Command `{com.CommandName}` created.");
            } catch (Exception ex) {
                if (ex is CustomCommClient.CommandExistsException)
                {
                    await e.Channel.SendMessage($"A command by the name `{com.CommandName}` already exists.");
                }
                else
                {
                    await _client.ReplyError(e, $"Command couldn't be created: ```{ex.ToString()}```");
                }
                return;
            }
        }
Пример #4
0
        static async Task Dice(CommandEventArgs args)
        {
            string maxString = args.GetArg("max");
            string minString = args.GetArg("min");

            int max = 6;
            int min = 1;

            if (maxString != null)
            {
                if (!int.TryParse(maxString, out max))
                {
                    throw new InvalidCommandArgumentException("Le maximum doit être un entier valide");
                }
            }

            if (minString != null)
            {
                if (!int.TryParse(minString, out min))
                {
                    throw new InvalidCommandArgumentException("Le minimum doit être un entier valide");
                }
            }

            if (max < min)
            {
                int temp = max;
                max = min;
                min = temp;
            }

            await args.Channel.SendMessage(Bot.rand.Next(min, max).ToString());
        }
Пример #5
0
        private async Task FinishClaim(CommandEventArgs e, int stars = 3)
        {
            var warInfo = GetInfo(e);

            if (warInfo == null || warInfo.Item1.Count == 0)
            {
                await e.Channel.SendMessage("💢🔰 **That war does not exist.**").ConfigureAwait(false);

                return;
            }
            var usr =
                string.IsNullOrWhiteSpace(e.GetArg("other_name")) ?
                e.User.Name :
                e.GetArg("other_name");

            var war = warInfo.Item1[warInfo.Item2];

            try
            {
                var baseNum = war.FinishClaim(usr, stars);
                await e.Channel.SendMessage($"❗🔰{e.User.Mention} **DESTROYED** a base #{baseNum + 1} in a war against {war.ShortPrint()}").ConfigureAwait(false);

                Save();
            }
            catch (Exception ex)
            {
                await e.Channel.SendMessage($"💢🔰 {ex.Message}").ConfigureAwait(false);
            }
        }
Пример #6
0
        //Adds question
        async internal static Task Add(CommandEventArgs e)
        {
            RuntimeStatics.Questions.Add(e.GetArg("Question"));
            await e.Channel.SendMessage($"Added Question {e.GetArg("Question")} at ID {RuntimeStatics.Questions.Count}");

            SaveQuestions();
        }
Пример #7
0
        //Moves a question to the specified location
        async internal static Task MoveTo(CommandEventArgs e)
        {
            int FirstID, SecondID;
            var questions = RuntimeStatics.Questions;

            if (int.TryParse(e.GetArg("FirstID"), out FirstID) && int.TryParse(e.GetArg("SecondID"), out SecondID))
            {
                if (FirstID > 0 && FirstID <= questions.Count && SecondID > 0 && SecondID <= questions.Count)
                {
                    var q = questions.ElementAt(FirstID - 1);
                    RuntimeStatics.Questions.RemoveAt(FirstID - 1);
                    RuntimeStatics.Questions.Insert(SecondID - 1, q);
                    SaveQuestions();
                    await e.Channel.SendMessage($"Moved question ID {FirstID} to {SecondID}");
                }
                else
                {
                    await e.Channel.SendMessage("ID was out of range. Please enter numbers within the current range of questions.");
                }
            }
            else
            {
                await e.Channel.SendMessage($"{e.GetArg("FirstID")} or {e.GetArg("SecondID")} is not a valid integers");
            }
        }
Пример #8
0
 public async void runCommand(CommandEventArgs command)
 {
     if (command.Args.Length == 0)
     {
         await command.Channel.SendMessage(command.Message.User.NicknameMention + " needs a argument for that command");
     }
     else if (!methods.ContainsKey(command.GetArg(0)))
     {
         if (command.Args.Length == 1 && conversational)
         {
             await methods[""](command);
         }
         else
         {
             await command.Channel.SendMessage(command.GetArg(0) + " is not an command");
         }
     }
     else
     {
         try
         {
             await methods[command.GetArg(0)](command);
         }catch (Exception e)
         {
             error(e, command);
         }
     }
 }
Пример #9
0
        private async Task RemoveCommand(CommandEventArgs e)
        {
            e.Channel.SendIsTyping();

            if (!commands.Exists(x => x.CommandName == e.GetArg("name")))
            {
                await e.Channel.SendMessage("Provided command doesn't exist.");

                return;
            }

            var com = commands.Find(x => x.CommandName == e.GetArg("name"));

            if (com.CreatorId != e.User.Id.ToString() &&
                !e.User.ServerPermissions.ManageServer)
            {
                await e.Channel.SendMessage("You are not the creator of this command, or do not have the Manage Server permission. Command not removed.");

                return;
            }

            try {
                await _custom.RemoveCommand(com);

                commands.Remove(com);

                //CreateCommands(_manager);

                await e.Channel.SendMessage("Command removed.");
            } catch (Exception ex) {
                await e.Channel.SendMessage($"Command couldn't be removed: ```{ex.ToString()}```");
            }
        }
Пример #10
0
        private static Tuple <List <ClashWar>, int> GetInfo(CommandEventArgs e)
        {
            //check if there are any wars
            List <ClashWar> wars = null;

            ClashWars.TryGetValue(e.Server.Id, out wars);
            if (wars == null || wars.Count == 0)
            {
                return(null);
            }
            // get the number of the war
            int num;

            if (string.IsNullOrWhiteSpace(e.GetArg("number")))
            {
                num = 0;
            }
            else if (!int.TryParse(e.GetArg("number"), out num) || num > wars.Count)
            {
                return(null);
            }
            num -= 1;
            //get the actual war
            return(new Tuple <List <ClashWar>, int>(wars, num));
        }
Пример #11
0
        public bool ValidChatBattleTarget(CommandEventArgs e)
        {
            bool userExists = e.Channel.Users.FirstOrDefault(u => u.Name == e.GetArg("target")) != null;
            bool npcExists  = Beta.UserStateRepository.NPCUserStates.FirstOrDefault(u => u.UserName == e.GetArg("target")) != null;

            return(userExists || npcExists);
        }
Пример #12
0
        public async Task RemoveRole(CommandEventArgs e)
        {
            string message = RoleManager.RemoveRole(e.GetArg(CommandsConstants.ParameterDiscordRole), (long)e.Server.Id) ?
                             SettingsModuleResource.RoleDisconnected : SettingsModuleResource.RoleCantDsiconnect;

            await SendStyleMessage(e.Channel, message, SettingsModuleResource.Markdown);
        }
Пример #13
0
        public async Task Unmute(CommandEventArgs e)
        {
            var user = e.Server.FindUsers(e.GetArg(Constants.ParameterUserName)).FirstOrDefault();

            if (user == null)
            {
                await SendStyleMessage(e.Channel, Strings.UserNotExist);

                return;
            }

            if (!e.Server.FindRoles(Constants.MuteRoleName).Any())
            {
                await e.Server.CreateRole(Constants.MuteRoleName, Discord.ServerPermissions.None, Discord.Color.DarkGrey);
            }

            var muteRole = e.Server.FindRoles(Constants.MuteRoleName).FirstOrDefault();

            if (muteRole == null)
            {
                return;
            }

            if (user.HasRole(muteRole))
            {
                await user.RemoveRoles(muteRole);
            }

            await SendStyleMessage(e.Channel, String.Format(Strings.UserUnmuted, user.Name));
        }
Пример #14
0
        public async Task Mute(CommandEventArgs e)
        {
            var user = e.Server.FindUsers(e.GetArg(Constants.ParameterUserName)).FirstOrDefault();

            if (user == null)
            {
                await SendStyleMessage(e.Channel, Strings.UserNotExist);

                return;
            }

            if (!e.Server.FindRoles(Constants.MuteRoleName).Any())
            {
                var role = await e.Server.CreateRole(Constants.MuteRoleName, Discord.ServerPermissions.None, Discord.Color.DarkGrey);

                foreach (var channel in e.Server.TextChannels)
                {
                    await channel.AddPermissionsRule(role, Discord.ChannelPermissions.None, Discord.ChannelPermissions.All(channel));
                }
            }

            await user.RemoveRoles(user.Roles.ToArray());

            await user.AddRoles(e.Server.FindRoles(Constants.MuteRoleName).First());

            await SendStyleMessage(e.Channel, String.Format(Strings.UserMuted, user.Name));
        }
Пример #15
0
        private async Task CharacterOverview(CommandEventArgs e)
        {
            try {
                e.Channel.SendIsTyping();
                MembershipType memtype;
                if (!ParsePlatform(e.GetArg("platform"), out memtype))
                {
                    await _client.ReplyError(e, "Invalid platform provided. Must be `psn` or `xbox`.");

                    return;
                }
                var    result = (await _bungie.SearchDestinyPlayer(memtype, e.GetArg("displayName"))).First();
                string id     = result.membershipId;
                if (String.IsNullOrWhiteSpace(id))
                {
                    await _client.ReplyError(e, $"No player by name `{e.GetArg("displayName")}` found.");

                    return;
                }

                var membership = await _bungie.GetAccountSummary(memtype, id);

                var answer = new StringBuilder();

                string clan;
                //if (String.IsNullOrWhiteSpace(membership.ClanName)) {
                //    clan = $", *{membership.ClanName}*";
                //} else {
                clan = String.Empty;
                //}

                answer.Append($"{result.displayName}{clan}: ")
                .AppendLine();
                answer.Append($"Last played: {membership.Characters.First().Base.DateLastPlayed.ToShortDateString()} {membership.Characters.First().Base.DateLastPlayed.ToShortTimeString()}")
                .AppendLine();
                foreach (var character in membership.Characters)
                {
                    answer.Append("    ")
                    .Append($"{character.Base.Race} {character.Base.Class} {character.Level}, Light: {character.Base.PowerLevel}")
                    .AppendLine();
                }
                await e.Channel.SendMessage(answer.ToString());
            } catch (Exception ex) {
                Console.WriteLine(ex);
                await _client.ReplyError(e, ex);
            }
        }
Пример #16
0
        public async Task RemoveFilter(CommandEventArgs e)
        {
            long id      = Convert.ToInt64(e.GetArg(Constants.Id));
            long guildId = (long)e.Server.Id;

            FilterService.Instance.Repository.RemoveFilterByGuildId(id, guildId);

            await SendStyleMessage(e.Channel, Strings.FilterRemoved);
        }
Пример #17
0
        public async Task Log(CommandEventArgs args)
        {
            Console.ForegroundColor = ConsoleColor.DarkCyan;

            Console.Write(args.User.Name + " (");
            Console.Write(args.User.Id);
            Console.Write(") - " + args.Channel.Name + ": ");
            Console.ResetColor();
            Console.WriteLine(args.GetArg("message"));
        }
Пример #18
0
        /// <summary>
        /// Removes active trade offer from list by queue id
        /// </summary>
        /// <param name="e">CommandEventArgs</param>
        public void OnDiscordRemoveOffer(CommandEventArgs e)
        {
            LockThreadsAndWait();

            /*Remove all matching offers*/
            int result = mActiveTradesList.RemoveAll(o => o.QueId == e.GetArg(0));

            e.Channel.SendMessage($"Removed {result} active trade offers");
            mSessionState = SessionState.Active;
        }
Пример #19
0
        static async Task Choose(CommandEventArgs args)
        {
            string[] values = args.GetArg("valeurs").Split(new char[] { ',' });

            for (int i = 0; i < values.Length; i++)
            {
                values[i] = values[i].Trim();
            }

            await args.Channel.SendMessage(values[Bot.rand.Next(values.Length)]);
        }
Пример #20
0
        public async Task AddRole(CommandEventArgs e)
        {
            string discordRole = e.GetArg(CommandsConstants.ParameterDiscordRole);
            string realRole    = e.GetArg(CommandsConstants.ParameterRealRole);

            try
            {
                CheckRole(e.Server.Roles, discordRole);
                BotRoles botRole = ParseRole(realRole);

                RoleManager.RemoveRole(discordRole, (long)e.Server.Id);
                RoleManager.AddRole(discordRole, botRole, (long)e.Server.Id);

                await SendStyleMessage(e.Channel, SettingsModuleResource.RolesConnected, SettingsModuleResource.Markdown);
            }
            catch (ArgumentException exp)
            {
                await SendStyleMessage(e.Channel,
                                       String.Format(SettingsModuleResource.RoleIsNotExist, exp.Message),
                                       SettingsModuleResource.Markdown);
            }
        }
Пример #21
0
        private Channel GetVoiceChannel(CommandEventArgs args)
        {
            var userName = args.GetArg(ARG_USER);

            if (string.IsNullOrEmpty(userName))
            {
                return(args.User.VoiceChannel);
            }

            var user = args.Server.FindUsers(userName, true).FirstOrDefault();

            return(user?.VoiceChannel);
        }
Пример #22
0
        public async Task Ban(CommandEventArgs e)
        {
            var user = e.Server.FindUsers(e.GetArg(Constants.ParameterUserName)).FirstOrDefault();

            if (user == null)
            {
                await SendStyleMessage(e.Channel, Strings.UserNotExist);

                return;
            }

            await e.Server.Ban(user);

            await SendStyleMessage(e.Channel, String.Format(Strings.UserBanned, user.Name));
        }
Пример #23
0
        public async Task genereateVsImage(CommandEventArgs args)
        {
            ulong otherId = 0;

            if (Bot.TryGetIdFromMention(args.GetArg("other"), ref otherId))
            {
                await args.Channel.SendIsTyping();

                User other = args.Channel.GetUser(otherId);
                await args.Channel.SendFile(args.User.Name + "vs" + other.Name + ".png", GenerateVs2Image(args.User, other));
            }
            else
            {
                await args.Channel.SendMessage("Utilisateur invalide.");
            }
        }
Пример #24
0
        private async Task SendViewMessage(CommandEventArgs e, Func <IComponent, long, bool> predicate)
        {
            try
            {
                CommandsManager manager = new CommandsManager((long)e.Server.Id, predicate);

                string name = e.GetArg(CommandsConstants.ParameterModuleName);
                string view = String.IsNullOrEmpty(name) ? manager.CreateComponentsView(mBotModulesObserver.Modules) :
                              manager.CreateComponentsView(CommandsManager.FindModule(name, mBotModulesObserver.Modules));

                await SendStyleMessage(e.Channel, view, SettingsModuleResource.Css);
            }
            catch (ArgumentException exp)
            {
                await SendExceptonMessage(e.Channel, exp);
            }
        }
Пример #25
0
        static async Task AddGame(CommandEventArgs args)
        {
            string gamename = args.GetArg("gamename");

            if (!gamesList.Contains(gamename))
            {
                string[] newGameList = new string[gamesList.Length + 1];
                gamesList.CopyTo(newGameList, 0);
                newGameList[gamesList.Length] = gamename;
                gamesList = newGameList;

                SaveLine(gameFileName, gamename);
                await args.Channel.SendMessage("Le jeu " + gamename + " à été ajouté.");

                BotDebug.Log("A game has been added (" + gamename + ")");
            }
        }
Пример #26
0
        public async Task AddFilter(CommandEventArgs e)
        {
            string pattern = e.GetArg(Constants.Regex);
            long   guildId = (long)e.Server.Id;

            if (IsValidRegex(pattern))
            {
                FilterService.Instance.Repository.Add(new Filter {
                    GuildId = guildId, Regex = pattern
                });
                await SendStyleMessage(e.Channel, String.Format(Strings.FilterAdded, pattern));
            }
            else
            {
                await SendStyleMessage(e.Channel, String.Format(Strings.IsNotValidRegex, pattern));
            }
        }
Пример #27
0
        static async Task Roast(CommandEventArgs args)
        {
            if (args.Server.Id == 210360089318522880ul)
            {
                await args.Channel.SendMessage("Commande désactivée dans ce sereur pour en respecter le climat pédagogique ¯\\_(ツ)_/¯");

                return;
            }

            string target     = args.GetArg("cible");
            string targetName = "qqn";

            if (target == null)
            {
                if (args.Channel.IsPrivate)
                {
                    targetName = args.User.Name;
                }
                else
                {
                    User[] users = args.Server.Users.Where((u) => (u.Status != UserStatus.Offline)).ToArray();
                    targetName = Bot.getUserName(users[Bot.rand.Next(users.Length)]);
                }
            }
            else if (target.ToLower() == "me")
            {
                targetName = args.User.Name;
            }
            else
            {
                ulong id = 0;
                if (Bot.TryGetIdFromMention(target, ref id))
                {
                    targetName = Bot.getUserName(args.Server.GetUser(id));
                }
                else
                {
                    targetName = target;
                }
            }
            int    chosenRoast = Bot.rand.Next(roastsList.Length);
            string roast       = String.Format(roastsList[chosenRoast], targetName);

            BotDebug.OnRoast(chosenRoast);
            await args.Channel.SendMessage(roast);
        }
Пример #28
0
        static async Task Color(CommandEventArgs args)
        {
            User   user      = args.User;
            string colorName = args.GetArg("colorname").ToLower();

            if (args.Channel.IsPrivate)
            {
                await args.Channel.SendMessage("Impossible de changer la couleur dans une cenversation privée.");
            }
            else if (colorRoles.Contains(colorName))
            {
                await user.RemoveRoles(getUserColorRoles(user));

                await Task.Delay(750);

                foreach (Role r in args.Server.Roles)
                {
                    if (r.Name.ToLower() == colorName)
                    {
                        await Bot.botInstance.DiscordClient.GetServer(args.Server.Id).GetUser(user.Id).AddRoles(r);
                    }
                }
            }
            else if (colorName == "default")
            {
                await user.RemoveRoles(getUserColorRoles(user));
            }
            else
            {
                StringBuilder builder = new StringBuilder("Veuillez entrer une couleur valide (");
                for (int i = 0; i < colorRoles.Length; i++)
                {
                    if (i != 0)
                    {
                        builder.Append(", ");
                    }
                    builder.Append(colorRoles[i]);
                }

                builder.Append(") ou 'default' pour avoir la couleur de base.");
                await args.Channel.SendMessage(builder.ToString());
            }
        }
Пример #29
0
        public override async Task ExecuteAsync(CommandEventArgs args)
        {
            var sound = args.GetArg(ARG_FILE);
            var file  = _soundRepository.GetSoundFile(sound);

            if (null == file)
            {
                await SendMessageToChannelAsync(args, $"Sound '{sound}' does not exist");

                return;
            }

            var voiceChannel = GetVoiceChannel(args);

            if (null == voiceChannel)
            {
                await SendMessageToChannelAsync(args, "No voice channel could be found");

                return;
            }

            await _player.PlayAsync(new DiscordChannel(voiceChannel), file.Path);
        }
Пример #30
0
        public async Task Calculate(CommandEventArgs e)
        {
            string expr = e.GetArg(CommandsConstants.Expression);

            try
            {
                double result = RichardCalculator.Calculate(expr);

                await SendStyleMessage(e.Channel, String.Format(SettingsModuleResource.ExpressionResult, expr, result), SettingsModuleResource.Markdown);
            }
            catch (LexicalException exp)
            {
                await SendStyleMessage(e.Channel, String.Format(SettingsModuleResource.LexicalException, expr, exp.Message), SettingsModuleResource.Markdown);
            }
            catch (SyntaxException exp)
            {
                await SendStyleMessage(e.Channel, String.Format(SettingsModuleResource.SyntaxException, expr, exp.Message), SettingsModuleResource.Markdown);
            }
            catch (Exception exp)
            {
                await SendStyleMessage(e.Channel, String.Format(SettingsModuleResource.Exception, expr, exp.Message), SettingsModuleResource.Markdown);
            }
        }