示例#1
0
        public override Task InvokeAsync(Robochan robo, SocketUserMessage message, SocketTextChannel channel, string[] arguments)
        {
            if (arguments.Length != 0)
            {
                robo.ReportError(channel, "No arguments required for ping command");
                return(Task.CompletedTask);
            }

            var reply = $"Pong... {(message.Timestamp - DateTime.Now).TotalMilliseconds}ms";

            var builder = new EmbedBuilder
            {
                Description = reply,
                Color       = Color.LightOrange,
            };

            channel.SendMessageAsync(null, false, builder.Build());
            return(Task.CompletedTask);
        }
示例#2
0
 public override Task InvokeAsync(Robochan robo, SocketUserMessage message, SocketTextChannel channel, string[] arguments)
 {
     foreach (var argument in arguments)
     {
         Console.WriteLine(argument);
     }
     if (arguments.Length == 0)
     {
         channel.SendMessageAsync($"{message.Author.Mention}'s avatar:\n{message.Author.GetAvatarUrl(ImageFormat.Png, 1024)}");
     }
     else
     {
         foreach (var mentionedUser in message.MentionedUsers)
         {
             channel.SendMessageAsync($"{mentionedUser.Mention}'s avatar:\n{mentionedUser.GetAvatarUrl(ImageFormat.Png, 1024)}");
         }
     }
     return(Task.CompletedTask);
 }
示例#3
0
        public override async Task InvokeAsync(Robochan robo, SocketUserMessage message, SocketTextChannel channel, string[] arguments)
        {
            if (arguments.Length != 1)
            {
                robo.ReportError(channel, "Expected single argument. (delete/archive)");
                return;
            }

            var cmd = arguments[0].ToLower();

            if (cmd == "delete")
            {
                await channel.DeleteAsync();
            }
            else if (cmd == "archive")
            {
                var t = message.DeleteAsync();

                await channel.ModifyAsync(x =>
                {
                    x.CategoryId = 834065526665379890;
                });

                await channel.SyncPermissionsAsync();

                var builder = new EmbedBuilder();
                builder.Color       = Color.Green;
                builder.Description = "Channel archived!";

                await channel.SendMessageAsync(null, false, builder.Build());

                await t;
            }
            else
            {
                robo.ReportError(channel, "Invalid command. Expected `delete` or `archive`");
            }

            return;
        }
示例#4
0
        public override Task InvokeAsync(Robochan robo, SocketUserMessage message, SocketTextChannel channel, string[] arguments)
        {
            var builder = new EmbedBuilder();

            builder.Color = Color.DarkMagenta;
            builder.Title = "Help";

            if (arguments.Length == 0)
            {
                var commands = robo.Commands;
                foreach (var cmd in commands)
                {
                    // @todo check permissions
                    var field = new EmbedFieldBuilder();
                    field.Name     = cmd.Name;
                    field.Value    = cmd.Description;
                    field.IsInline = true;
                    builder.AddField(field);
                }
            }
            else
            {
                List <string> unfound             = new List <string>();
                Command       last_referenced_cmd = null;

                var commands = robo.Commands;
                int added    = 0;
                foreach (var arg in arguments)
                {
                    bool found = false;
                    foreach (var cmd in commands)
                    {
                        if (arg.ToLower() == cmd.Name)
                        {
                            // @todo check permissions
                            var field = new EmbedFieldBuilder();
                            field.Name     = cmd.Name;
                            field.Value    = cmd.Description;
                            field.IsInline = true;
                            builder.AddField(field);
                            added += 1;
                            found  = true;
                            last_referenced_cmd = cmd;
                            break;
                        }
                    }

                    if (found == false)
                    {
                        unfound.Add(arg);
                    }
                }

                if (unfound.Count > 0)
                {
                    var err = "Invalid commands: ";
                    foreach (var a in unfound)
                    {
                        err += $"`{a}` ";
                    }
                    robo.ReportError(channel, err);
                }

                if (added == 0)
                {
                    return(Task.CompletedTask);
                }

                if (added == 1 && last_referenced_cmd != null)
                {
                    var footer = $"Syntax: {robo.Prefix}{last_referenced_cmd.Name} {last_referenced_cmd.Syntax}";
                    builder.Footer = new EmbedFooterBuilder {
                        Text = footer
                    };
                }
            }

            channel.SendMessageAsync(null, false, builder.Build());

            return(Task.CompletedTask);
        }
示例#5
0
 public abstract Task InvokeAsync(Robochan robo, SocketUserMessage message, SocketTextChannel channel, string[] arguments);