コード例 #1
0
ファイル: CWBDrone.cs プロジェクト: HelpfulStranger999/CWB
        public async Task HandleCommandsAsync(SocketMessage msg)
        {
            if (msg.Author.IsWebhook || msg.Author.Id == Socket.CurrentUser.Id)
            {
                return;
            }

            if (msg is SocketUserMessage message)
            {
                var pos    = 0;
                var prefix = (message.Channel is ITextChannel) ? Configuration.Guilds.GetGuild(
                    (message.Channel as ITextChannel).GuildId).Prefix : Prefix;

                if (message.HasPrefix(prefix, Socket.CurrentUser, ref pos))
                {
                    var context = new CWBContext(this, message);
                    var result  = await Commands.ExecuteAsync(context, message.Content.Substring(pos), Services);

                    if (!result.IsSuccess)
                    {
                        await HandleCommandError(result);
                    }
                }
            }
        }
コード例 #2
0
        public static string Format(string command, CWBContext context, params string[] parameters)
        {
            var cmd = VariableFormatting.FormatDateTime(context.ConfigGuild, command);

            cmd = cmd.Replace("{{.Prefix}}", context.Prefix);
            foreach (Match match in Arguments.Matches(cmd))
            {
                cmd = cmd.Replace(match.Value, parameters[int.Parse(match.Groups[0].Value)]);
            }

            return(cmd);
        }
コード例 #3
0
        public static async Task <string> Respond(string command, CWBContext context)
        {
            if (command.ContainsIgnoreCase("{{.Silent}}"))
            {
                return(command.Replace("{{.Silent}}", ""));
            }
            else if (command.ContainsIgnoreCase("{{.DM}}"))
            {
                command = command.Replace("{{.DM}}", "");
                await context.User.SendMessageAsync(command);
            }
            else if (command.ContainsIgnoreCase(".DM"))
            {
            }

            return(command);
        }
コード例 #4
0
ファイル: CWBDrone.cs プロジェクト: HelpfulStranger999/CWB
        public async Task HandleMessagesAsync(SocketMessage msg)
        {
            if (msg is SocketUserMessage message)
            {
                var _      = 0;
                var prefix = (message.Channel is ITextChannel) ? Configuration.Guilds.GetGuild(
                    (message.Channel as ITextChannel).GuildId).Prefix : Prefix;

                if (message.HasPrefix(prefix, Socket.CurrentUser, ref _))
                {
                    return;
                }

                var context = new CWBContext(this, message);
                foreach (var type in IListeners)
                {
                    var listener = DependencyInjection.CreateInjected <IListener>(type, Services, context);
                    if (listener.GetRunMode() == RunMode.Async)
                    {
                        await Task.Run(async() =>
                        {
                            try
                            {
                                await listener.ExecuteAsync();
                            }
                            catch (Exception e)
                            {
                                await HandleCommandError(ExecuteResult.FromError(e));
                            }
                        });
                    }
                    else
                    {
                        try
                        {
                            await listener.ExecuteAsync();
                        }
                        catch (Exception e)
                        {
                            await HandleCommandError(ExecuteResult.FromError(e));
                        }
                    }
                }
            }
        }
コード例 #5
0
        public static async Task <string> FormatMessage(CWBContext context, string str)
        {
            var value = str;

            if (value.ContainsIgnoreCase(".User"))
            {
                value = FormatUser(context.User, value);
            }

            if (value.ContainsIgnoreCase(".Guild"))
            {
                value = await FormatGuild(context.Guild, value);
            }

            if (value.ContainsIgnoreCase(".Guild.Owner"))
            {
                value = FormatOwner(await context.Guild.GetOwnerAsync(), value);
            }

            if (value.ContainsIgnoreCase(".Member"))
            {
                value = FormatMember(context.GuildUser, value);
            }

            if (value.ContainsIgnoreCase(".Channel"))
            {
                value = FormatChannel(context.Channel, value);
            }

            if (value.ContainsIgnoreCase(".TextChannel"))
            {
                value = FormatTextChannel(context.TextChannel, await context.Guild.GetUserAsync(context.Bot.Socket.CurrentUser.Id), value);
            }

            return(value);
        }