private Task Discord_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            if (e.Author.IsBot)
            {
                return(Task.CompletedTask);
            }

            if (Config.ChannelId > 0 && e.Channel.Id.Equals(Config.ChannelId))
            {
                var message = e.Message.Content.ToUpper();
                foreach (var dict in _linkIds)
                {
                    if (dict.Value == message)
                    {
                        Log.Info($"Linked steamid:{dict.Key} with discord:{e.Author.Username}#{e.Author.Discriminator}");

                        if (AddDiscordRelation(dict.Key, $"{e.Author.Username}#{e.Author.Discriminator}").Result)
                        {
                            _linkIds.Remove(dict.Key);
                            _chatmanager.SendMessageAsOther("DiscordRoleManager", "Link successful", MyFontEnum.White, dict.Key);
                            e.Message.CreateReactionAsync(DiscordEmoji.FromName(_discord, ":heavy_check_mark:"));

                            return(UpdatePlayerRank(dict.Key, $"{e.Author.Username}#{e.Author.Discriminator}"));
                        }
                        else
                        {
                            _chatmanager.SendMessageAsOther("DiscordRoleManager", "Link unsuccessful", MyFontEnum.Red, dict.Key);
                            e.Message.CreateReactionAsync(DiscordEmoji.FromName(_discord, ":heavy_multiplication_x:"));
                        }
                    }
                }
            }

            return(Task.CompletedTask);
        }
Beispiel #2
0
        private async Task Client_DetectSayHi(DiscordClient sender, DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            string msg = e.Message.Content.ToLower();

            if (msg.Contains("привет") && msg.Contains("скелетик"))
            {
                await e.Message.RespondAsync("https://cdn.discordapp.com/attachments/776568856167972904/836541954779119616/4a5b505b4026b6fe30376b0b79d3e108fa755e07r1-540-540_hq.gif");

                return;
            }

            if (msg.Contains("вставай припадочный"))
            {
                await e.Message.RespondAsync("https://cdn.discordapp.com/attachments/776568856167972904/838014941884579880/JeRWf8iDd_4.png");

                return;
            }

            if (msg.Contains("привет") && (msg.Contains("виталий") || msg.Contains("припадочный") || msg.Contains("виталя")))
            {
                await e.Message.RespondAsync(":skull:");

                return;
            }
        }
Beispiel #3
0
        private async Task DiscordClient_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            if (e.Author.IsCurrent)
            {
                return;
            }

            string serverId;

            try
            {
                await discordLock.WaitAsync();

                if (!discordToServer.TryGetValue(e.Channel.Id, out serverId))
                {
                    return;
                }
            }
            finally
            {
                discordLock.Release();
            }

            FactorioDiscordDataReceived?.Invoke(this, new ServerMessageEventArgs(serverId, e.Author, e.Message.Content));
        }
Beispiel #4
0
        public static async Task DownloadFileAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            if (!isBotDUploaded)
            {
                var fileUrl      = e.Message.Attachments[0].Url;
                var fileName     = e.Message.Attachments[0].FileName;
                var endDirectory = Directory.GetCurrentDirectory() + @"\Files\";

                using (httpClient = new HttpClient())
                {
                    using HttpResponseMessage response = await httpClient.GetAsync(fileUrl);

                    using Stream streamToReadFrom = await response.Content.ReadAsStreamAsync();

                    using FileStream DestinationStream = File.Create(endDirectory + fileName.ToString());
                    await streamToReadFrom.CopyToAsync(DestinationStream);
                }
                await e.Message.RespondAsync("Successfully Downloaded!");

                Console.WriteLine("[info] Downloaded");
            }
            else
            {
                Console.WriteLine("[info] It's mine");
            }
        }
Beispiel #5
0
        public static async Task <DiscordUser> GetUserFromDiscord(DSharpPlus.EventArgs.MessageCreateEventArgs e, ArkServer server = null)
        {
            //Check if this user has roles.
            DiscordUserPermissionLevel perm = DiscordUserPermissionLevel.anyone;

            if (server != null)
            {
                //Fetch their permission level.
                var guild = e.Guild;
                if (guild != null)
                {
                    var member = await guild.GetMemberAsync(e.Author.Id);

                    CheckIfUserHasRoles(member, server.adminRoleId, server.userRoleId, out bool isAdmin, out bool isUser);

                    if (isUser)
                    {
                        perm = DiscordUserPermissionLevel.user;
                    }
                    if (isAdmin)
                    {
                        perm = DiscordUserPermissionLevel.admin;
                    }
                }
            }
            //Check if this user owns the bot.
            if (e.Author.Id == Program.ownerId)
            {
                perm = DiscordUserPermissionLevel.owner;
            }

            return(new DiscordUser(e.Author.Username, e.Author.Id, perm));
        }
Beispiel #6
0
 private async Task Client_MessageCreatedAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e)
 {
     if (e.Message.Content.Contains(":foodReview:"))
     {
         VoiceNextExtension voiceNextClient = Program.Client.GetVoiceNext();
         VoiceNextConnection voiceNextCon = voiceNextClient.GetConnection(e.Guild);
         if (voiceNextCon == null)
         {
             foreach (DiscordVoiceState vs in e.Guild.VoiceStates)
             {
                 if (vs.User.Username.Equals(e.Author.Username))
                 {
                     voiceNextCon = await voiceNextClient.ConnectAsync(vs.Channel);
                 }
             }
         }
         if (voiceNextCon == null)
         {
             // user wasnt in a voice channel
             return;
         }
         else
         {
             // await PlayAudio(voiceNextCon, @"AudioFiles\foodReview.mp3");
             voiceNextCon.Disconnect();
         }
     }
 }
Beispiel #7
0
 public CommandContext CreateContext(DSharpPlus.EventArgs.MessageCreateEventArgs e)
 {
     return(new CommandContext()
     {
         Message = e.Message, User = e.Author, Channel = e.Channel, Guild = e.Guild
     });
 }
        private async Task HandleQuoteAsync(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            JToken quote = data["quotes"][e.Message.Content];

            if (quote != null)
            {
                await e.Message.RespondAsync(quote.ToString());
            }
        }
Beispiel #9
0
        public async Task ListBackupsDiscord(DSharpPlus.EventArgs.MessageCreateEventArgs e, string src)
        {
            var embed = Tools.GenerateEmbed("Fetching...", "", "", DSharpPlus.Entities.DiscordColor.Yellow);
            var msg   = await e.Message.RespondAsync(embed : embed);

            ArkIOInterface_SavedContext context = new ArkIOInterface_SavedContext();

            context.msg = msg;
            CreateRequest(RequestType.DirList, src, "", 0, 0, new RSN_ClientResponse(ListBackupsCallback), context);
        }
Beispiel #10
0
        public static async Task UploadFile(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            await e.Message.RespondAsync("Second..");

            var filePath = Directory.GetCurrentDirectory() + @"\made.png";
            await e.Channel.SendFileAsync(filePath, "Complited");

            await e.Message.RespondAsync("Good luck!");

            isBotDUploaded = true;
        }
Beispiel #11
0
        //Works with RCON stuff

        /*
         * public static async Task<ArkRconConnection> ConnectToRcon(string ip, ushort port, string arkPassword)
         * {
         *  ArkRconConnection c = null;
         *  bool ready = false;
         *  var rcon = new RconClient(new System.Net.IPEndPoint(System.Net.IPAddress.Parse(ip), port), arkPassword, new RconClient.ReadyCallback((RconClient context, bool okay) =>
         *  {
         *      ready = true;
         *
         *  }));
         *  c = new ArkRconConnection(rcon, ip, port, arkPassword);
         *  while (ready == false) ;
         *  c.isReady = ready;
         *  Console.WriteLine("Sock ready");
         *  return c;
         * }
         *
         * public static async Task<ArkRconConnection> ConnectToRcon(string ip, int port, string arkPassword)
         * {
         *  return await ConnectToRcon(ip, ushort.Parse(port.ToString()), arkPassword);
         * }
         *
         * //Class stuff
         * RconClient rconClient;
         * public bool isReady = false;
         * public string failMsg;
         * public string ip;
         * public ushort port;
         * public string arkPassword;
         *
         * public ArkRconConnection(RconClient client, string _ip, ushort _port, string _arkPassword)
         * {
         *  //Main constructor.
         *  rconClient = client;
         *  ip = _ip;
         *  port = _port;
         *  arkPassword = _arkPassword;
         * }
         *
         * public string RunCommand(string msg)
         * {
         *  //Wait to be ready
         *  Console.WriteLine("what");
         *  string response = rconClient.GetResponse(msg);
         *  Console.WriteLine(response);
         *  return response;
         * }*/

        public static async Task DiscordRawRconCommand(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser user, ArkServer server)
        {
            if (user.permissionLevel == DiscordUserPermissionLevel.owner)
            {
                //Ok to run.
                await e.Message.RespondAsync(server.rconConnection.GetResponse(e.Message.Content.Substring((Program.PrefixString + "rcon ").Length)));
            }
            else
            {
                //Cannot run becasue of permission level.
                await e.Message.RespondAsync("ERROR - Cannot run raw command because you're not the bot owner!");
            }
        }
        public static async Task OnCommandAuthFailed(DSharpPlus.EventArgs.MessageCreateEventArgs e, RegisteredCommand command)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = ":warning: Not Authorized";
            builder.Description = $"Sorry, you're not allowed to use that command. You must be a {command.requiredLevel.ToString().ToLower()} to do this.";
            builder.Color       = DiscordColor.Yellow;
            builder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #13
0
 private Task DiscordBot_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e)
 {
     if (e.Author == DiscordBot.CurrentUser)
     {
         return(Task.CompletedTask);
     }
     if (e.Channel.Id != Config.DiscordChannelID)
     {
         return(Task.CompletedTask);
     }
     TShock.Utils.Broadcast(String.Format(Config.MessageFormatDiscordToTerraria, e.Author.Username, e.Message.Content), Config.GetColor());
     return(Task.CompletedTask);
 }
        public static async Task ReturnError(DSharpPlus.EventArgs.MessageCreateEventArgs e, string title, string description)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = title;
            builder.Description = description;
            builder.Color       = DiscordColor.Red;
            builder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
        public static async Task ReturnOk(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser victim, DateTime time)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = "User Temporarily Banned";
            builder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) has been banned. They will be unbanned in {BotTools.DateTimeOffsetToString(time - DateTime.UtcNow).TrimEnd(' ')}.";
            builder.Color       = DiscordColor.Green;
            builder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #16
0
        public static async Task ReturnOk(DSharpPlus.EventArgs.MessageCreateEventArgs e, DiscordUser victim, int strikeCount)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = "User Striked";
            builder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) has been striked. This is strike number {strikeCount}.";
            builder.Color       = DiscordColor.Green;
            builder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
        private static Task Discord_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            if (AlliancePlugin.config.DiscordChannelId == e.Channel.Id)
            {
                if (e.Author.IsBot)
                {
                    ShipyardCommands.SendMessage(e.Author.Username, e.Message.Content, Color.LightGreen, 0L);
                }
            }


            return(Task.CompletedTask);
        }
        public static async Task OnCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content, DiscordMember member, DiscordPermissionLevel perms, DiscordUserData data)
        {
            if (content.Length == 0)
            {
                await ReturnHelp(e);

                return;
            }

            //Do it

            //Find the user
            DiscordUser victim = await BotTools.ParseOfflineName(content.Trim(' '));

            //If not found, complain
            if (victim == null)
            {
                DiscordEmbedBuilder badBuilder = new DiscordEmbedBuilder();
                badBuilder.Title       = "User Not Found";
                badBuilder.Description = $"\"{content.Trim(' ')}\" was not found. Try their ID.";
                badBuilder.Color       = DiscordColor.Yellow;
                badBuilder.Footer      = new DiscordEmbedBuilder.EmbedFooter
                {
                    Text = Program.FOOTER_TEXT
                };
                await e.Message.RespondAsync(embed : badBuilder.Build());

                return;
            }

            //Get user
            DiscordUserData victimData = BotTools.GetUserDataById(victim.Id);

            //Set as not active
            victimData.temp_banned.is_applied = false;

            //Save
            victimData.Save();

            //Write OK
            DiscordEmbedBuilder okBuilder = new DiscordEmbedBuilder();

            okBuilder.Title       = "User Unbanned";
            okBuilder.Description = $"{victim.Username}#{victim.Discriminator} ({victim.Id}) was unbanned.";
            okBuilder.Color       = DiscordColor.Green;
            okBuilder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : okBuilder.Build());
        }
        public static async Task OnCommandExceptionFailed(DSharpPlus.EventArgs.MessageCreateEventArgs e, RegisteredCommand command, Exception ex)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = ":exclamation: Command Failed";
            builder.Description = $"There was an internal error while processing this command. Sorry, try again.";
            builder.AddField("Exception Name", ex.Message);
            builder.AddField("Exception Stack Trace", "```" + ex.StackTrace + "```");
            builder.Color  = DiscordColor.Red;
            builder.Footer = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #20
0
        public async Task BeginArkLink(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            //Create a random id
            string id    = Tools.GenerateRandomString(8);
            var    embed = Tools.GenerateEmbed("Ark Link", "", "To link your Discord account to your Ark user, type **" + id + "** into the Ark chat.", DiscordColor.Magenta);
            var    msg   = await e.Message.RespondAsync(embed : embed);

            PendingArkLink pal = new PendingArkLink();

            pal.user        = this;
            pal.linkPending = true;
            pal.randId      = id;
            pal.msg         = msg;
            Program.pendingArkLinks.Add(pal);
        }
        public static async Task ReturnHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = "Temp Ban Help";
            builder.Description = $"``{{member}}, {{time}}, {{message}}``\n\nThe ban command will temporarily ban";
            builder.AddField("Usage", "To temporarily ban a member, type their name followed by comma and the duration. Then, add a comma and include a message. If you would like a ban to never expire, use \"never\" as a time.");
            builder.AddField("Remarks", "Bans **__are not anonymous__** and your username will be included on the direct message sent to the member.");
            builder.AddField("Examples", $"``{Program.config.command_prefix}tempban RomanPort#0001, 2 minutes, Some message here, up to 900 characters. This user can return in 2 minutes.``\n\n``{Program.config.command_prefix}tempban RomanPort#0001, 2 days, This will strike for two days, then expire.``\n\n``{Program.config.command_prefix}tempban RomanPort#0001, 2 days 1 year, You can have more advanced timeframes here, but you cannot include commas.``");
            builder.Color  = DiscordColor.Grayple;
            builder.Footer = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #22
0
        public static async Task Respond(Bot bot, DSharpPlus.EventArgs.MessageCreateEventArgs args)
        {
            if (DateTime.Now.Day != _dayWhenEmotionalTitanicFluteHasBeenSent)
            {
                _emotionalTitanicFluteHasBeenSentToday   = false;
                _dayWhenEmotionalTitanicFluteHasBeenSent = DateTime.Now.Day;
            }

            if (!_emotionalTitanicFluteHasBeenSentToday)
            {
                // Absolutely emotional Titanic flute
                await args.Channel.SendMessageAsync("https://www.youtube.com/watch?v=KolfEhV-KiA");

                _emotionalTitanicFluteHasBeenSentToday = true;
            }
        }
Beispiel #23
0
        static async Task OnDmMessage(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            //Assume this is for creation
            DiscordUser user = await DiscordUser.GetUserFromDiscord(e);

            await ArkServer.MessageSentToFinshSetup(e, user);

            /*//First, check if this user is in the process of creating an Ark server
             * ArkServer[] userCreatingServers = ArkServer.GetArkServersInSetupStageForUser(e.Author.Id);
             * if (userCreatingServers.Length == 1)
             * {
             *  //User is creating a server. Go through with the setup of it.
             *  await userCreatingServers[0].MessageSentDuringSetup(e);
             *  return;
             * }*/
        }
Beispiel #24
0
        public async Task ListPlayersCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            //Run the RCON command.
            string[] playerList = await FetchPlayerList();

            string outputList = "";

            foreach (string player in playerList)
            {
                outputList += player + "\r\n";
            }
            //Generate
            var embed = Tools.GenerateEmbed("Player Listing", playerList.Length.ToString() + " players total", outputList, DSharpPlus.Entities.DiscordColor.Magenta);
            //Respond
            await e.Message.RespondAsync(embed : embed);
        }
        public static async Task ReturnHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = "Unban Help";
            builder.Description = $"``{{member}}``\n\nThe command will unban this member. A message will be sent to them.";
            builder.AddField("Usage", "To unban a member, tag them or type in their name. Make sure to include the discriminator.");
            builder.AddField("Remarks", "If this user changed their username, you'll need to use their old username. This is due to limitations of Discord.");
            builder.AddField("Examples", $"``{Program.config.command_prefix}unban RomanPort#0001``");
            builder.Color  = DiscordColor.Grayple;
            builder.Footer = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #26
0
        public async Task ShowPersonalHelp(DSharpPlus.EventArgs.MessageCreateEventArgs e, ArkServer server)
        {
            string help   = "";
            string prefix = Program.PrefixString;

            help += prefix + "**help** - Shows the menu you're in right now! \r\n";
            help += prefix + "**chat** - If your admin enabled it, sends a chat message to the Ark server. \r\n";
            help += prefix + "**list** - Shows a playerlist of everyone on the Ark server. \r\n";
            var channel = await Program.discord.GetChannelAsync(server.notificationChannel);

            help += "\r\nThe current notification channel for this Ark server is **" + channel.Name + "**.";

            //Create embed
            var embed = Tools.GenerateEmbed("ArkBot Help", "ArkBot by RomanPort - V0.0.0 - romanport.com", help, Program.CreateDynamicColor());
            await e.Message.RespondAsync(embed : embed);
        }
        public static async Task OnCommand(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content)
        {
            //Get Discord member and user data
            DiscordMember member = await e.Guild.GetMemberAsync(e.Author.Id);

            DiscordUserData data = BotTools.GetUserDataById(e.Author.Id);

            data.latest_name = $"{e.Author.Username}#{e.Author.Discriminator}";

            //Identify the permission level of this member
            DiscordPermissionLevel perms = DiscordPermissionLevel.Default;

            if (member.Roles.Where(x => x.Id == Program.config.muted_role).Count() > 0)
            {
                perms = DiscordPermissionLevel.Moderator;
            }
            if (member.Roles.Where(x => x.Id == Program.config.admin_role).Count() > 0)
            {
                perms = DiscordPermissionLevel.Admin;
            }

            //Now, find a command we can use.
            foreach (var c in commands)
            {
                if (c.prefix.ToLower() != prefix.ToLower())
                {
                    continue;
                }
                if (c.requiredLevel > perms)
                {
                    //Tell the user that they're not allowed to do that.
                    await OnCommandAuthFailed(e, c);

                    return;
                }
                try
                {
                    await c.callback(e, prefix, content, member, perms, data);
                } catch (Exception ex)
                {
                    //Failed!
                    Program.LogMessage("cmd-error", ex.Message + ex.StackTrace);
                    await OnCommandExceptionFailed(e, c, ex);
                }
            }
        }
        public static async Task OnCmd(DSharpPlus.EventArgs.MessageCreateEventArgs e, string prefix, string content, DiscordMember member, DiscordPermissionLevel perms, DiscordUserData data)
        {
            //Create an embed with all of the commands this user has access to
            var cmds = CommandProcessor.commands.Where(x => x.requiredLevel <= perms);
            DiscordEmbedBuilder builder = new DiscordEmbedBuilder();

            builder.Title       = "Command Help";
            builder.Description = "With any command, run it without any parameters for help.";
            builder.Color       = DiscordColor.Grayple;
            builder.Footer      = new DiscordEmbedBuilder.EmbedFooter
            {
                Text = Program.FOOTER_TEXT
            };
            foreach (var c in cmds)
            {
                builder.AddField(Program.config.command_prefix + c.prefix, c.info, true);
            }
            await e.Message.RespondAsync(embed : builder.Build());
        }
Beispiel #29
0
        static async Task analyzeMessage(DSharpPlus.EventArgs.MessageCreateEventArgs message)
        {
            var channel = message.Channel;

            switch (message.Message.Content.ToLower())
            {
            case "ping":
                await message.Message.RespondAsync("pong!");

                break;

            default:
                if (true)    //mention.Predict(message.Message.Content.ToLower()))//mentionedMartinB(message.Message.Content.ToLower()))
                {
                    await discord.SendMessageAsync(channel, "Кто тут такой смелый?");
                }
                break;
            }
        }
Beispiel #30
0
        private Task Client_MessageCreated(DSharpPlus.EventArgs.MessageCreateEventArgs e)
        {
            if (BannedUser.IsBan(e.Author.Id))
            {
                e.Message.RespondAsync("Sorry but you are banned");
                return(Task.Delay(0));
            }
            //Lua Callback
            var table = MoonSharp.Interpreter.DynValue.NewPrimeTable();

            foreach (var item in e.Message.Content.Split(' '))
            {
                table.Table.Append(MoonSharp.Interpreter.DynValue.NewString(item));
            }
            Lua.Userdatas.AsayoLuaEvent.CallOnMessage(table, MoonSharp.Interpreter.UserData.Create(new Lua.Userdatas._DSharpPlus.MessageArgsObject(e)));

            CommandManager.Call(CommandManager.CreateContext(e));//Command manager call

            return(Task.Delay(0));
        }