Exemplo n.º 1
0
        protected internal async Task CustomCommandAsync()
        {
            foreach (var guild in Configuration.Guilds)
            {
                await Commands.CreateModuleAsync("", module =>
                {
                    module.AddPrecondition(new GuildSpecificAttribute(guild.ID));
                    foreach (var command in guild.CustomCommands)
                    {
                        var value = command.Value;
                        module.AddCommand(command.Key, async(context, parameters, services, info) =>
                        {
                            var cmd = await VariableFormatting.FormatMessage(context as CWBContext, value);
                            CommandParser.Format(cmd, context as CWBContext, (parameters[0] as string)?.Split(' '));
                            await CommandParser.Respond(cmd, context as CWBContext);
                        }, builder =>
                        {
                            foreach (var pc in CommandParser.ParsePreconditions(ref value))
                            {
                                builder.AddPrecondition(pc);
                            }

                            builder.AddAttributes(new CustomCommandAttribute());
                            builder.AddParameter("objects", typeof(string), param =>
                            {
                                param.IsOptional  = true;
                                param.IsRemainder = true;
                            });
                        });
                    }
                });
            }
        }
Exemplo n.º 2
0
        public async Task GreetingsAsync(SocketGuildUser user)
        {
            var configGuild = Configuration.Guilds[user.Guild.Id];
            var channel     = user.Guild.GetTextChannel(configGuild.GreetingsChannel);
            var builder     = new EmbedBuilder
            {
                Author = new EmbedAuthorBuilder()
                {
                    Name    = user.Nickname ?? user.Username,
                    IconUrl = user.GetAvatarUrl()
                },
                Footer = new EmbedFooterBuilder
                {
                    Text    = "User joined on",
                    IconUrl = user.GetAvatarUrl()
                },
                Timestamp   = DateTimeOffset.UtcNow,
                Description = await VariableFormatting.FormatJoin(user, configGuild.GreetingsMessage),
                Color       = configGuild.GreetingsColor.ToDiscordColor()
            };

            await Task.Run(async() =>
            {
                await BuildImageAsync(builder);
                await channel.SendMessageAsync(embed: builder.Build());
            });
        }
Exemplo n.º 3
0
        public RotatingStatusService(BaseSocketClient socket, Queue <string> statuses = null)
        {
            StatusValues = statuses ?? new Queue <string>();
            Socket       = socket;

            rotationTimer = new Timer(async _ =>
            {
                if (StatusValues.Count <= 0)
                {
                    return;
                }

                var status = StatusValues.Dequeue();
                if (status.EqualsIgnoreCase(Socket.Activity?.Name ?? ""))
                {
                    return;
                }

                StatusValues.Enqueue(status);
                await Socket.SetGameAsync(await VariableFormatting.FormatStatus(Socket, status));
            },
                                      null,
                                      Timeout.Infinite,
                                      Timeout.Infinite);
        }
Exemplo n.º 4
0
 public async Task BanAsync(SocketUser user, SocketGuild guild)
 {
     var configGuild = Configuration.Guilds[guild.Id];
     var channel     = guild.GetTextChannel(configGuild.BanChannel);
     await channel.SendMessageAsync(await VariableFormatting.FormatBan(user, guild, configGuild.BanMessage));
 }
Exemplo n.º 5
0
 public async Task LeaveAsync(SocketGuildUser user)
 {
     var configGuild = Configuration.Guilds[user.Guild.Id];
     var channel     = user.Guild.GetTextChannel(configGuild.LeaveChannel);
     await channel.SendMessageAsync(await VariableFormatting.FormatLeave(user, configGuild.LeaveMessage));
 }