93 lines
No EOL
3.2 KiB
C#
93 lines
No EOL
3.2 KiB
C#
namespace EllieBot.Modules.Utility.LiveChannel;
|
|
|
|
public partial class Utility
|
|
{
|
|
[Group]
|
|
public class LiveChannelCommands(LiveChannelService svc) : EllieModule
|
|
{
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageChannels)]
|
|
[BotPerm(GuildPerm.ManageChannels)]
|
|
public async Task LiveChAdd(IChannel channel, [Leftover] string template)
|
|
{
|
|
if (!await svc.AddLiveChannelAsync(ctx.Guild.Id, channel, template))
|
|
{
|
|
await Response()
|
|
.Error(strs.livechannel_limit(LiveChannelService.MAX_LIVECHANNELS))
|
|
.SendAsync();
|
|
return;
|
|
}
|
|
|
|
var eb = CreateEmbed()
|
|
.WithOkColor()
|
|
.WithDescription(GetText(strs.livechannel_added(channel.Name)))
|
|
.AddField(GetText(strs.template), template, true)
|
|
.AddField(GetText(strs.preview),
|
|
await repSvc.ReplaceAsync(template,
|
|
new(
|
|
client: ctx.Client as DiscordSocketClient,
|
|
guild: ctx.Guild
|
|
)),
|
|
true)
|
|
.WithFooter(GetText(strs.livechannel_please_wait));
|
|
await Response()
|
|
.Embed(eb)
|
|
.SendAsync();
|
|
return;
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageChannels)]
|
|
[BotPerm(GuildPerm.ManageChannels)]
|
|
public async Task LiveChList()
|
|
{
|
|
var liveChannels = await svc.GetLiveChannelsAsync(ctx.Guild.Id);
|
|
|
|
if (liveChannels.Count == 0)
|
|
{
|
|
await Response().Pending(strs.livechannel_list_empty).SendAsync();
|
|
return;
|
|
}
|
|
|
|
var embed = CreateEmbed()
|
|
.WithTitle(GetText(strs.livechannel_list_title(ctx.Guild.Name)));
|
|
|
|
foreach (var config in liveChannels)
|
|
{
|
|
var channelName = await ctx.Guild.GetChannelAsync(config.ChannelId)
|
|
.Fmap(x => x?.Name ?? config.ChannelId.ToString());
|
|
|
|
embed.AddField(channelName, config.Template);
|
|
}
|
|
|
|
await Response().Embed(embed).SendAsync();
|
|
}
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageChannels)]
|
|
[BotPerm(GuildPerm.ManageChannels)]
|
|
public Task LiveChRemove(IChannel channel)
|
|
=> LiveChRemove(channel.Id);
|
|
|
|
[Cmd]
|
|
[RequireContext(ContextType.Guild)]
|
|
[UserPerm(GuildPerm.ManageChannels)]
|
|
[BotPerm(GuildPerm.ManageChannels)]
|
|
public async Task LiveChRemove(ulong channelId)
|
|
{
|
|
if (await svc.RemoveLiveChannelAsync(ctx.Guild.Id, channelId))
|
|
{
|
|
await Response()
|
|
.Confirm(strs.livechannel_removed(((SocketGuild)ctx.Guild).GetChannel(channelId)?.Name ??
|
|
channelId.ToString())).SendAsync();
|
|
}
|
|
else
|
|
{
|
|
await Response().Error(strs.livechannel_not_found).SendAsync();
|
|
}
|
|
}
|
|
}
|
|
} |