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; }); }); } }); } }
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()); }); }
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); }
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)); }
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)); }