public async Task SendAsync([TextChannel] DiscordChannel channel, [Remainder] string message) { var permissions = channel.Guild.CurrentMember.PermissionsIn(channel); if (!permissions.HasPermission(Permissions.AccessChannels)) { await ReplyErrorAsync(Localization.AdministrationTextChannelNoViewPermission); return; } if (!permissions.HasPermission(Permissions.SendMessages)) { await ReplyErrorAsync(Localization.BotTextChannelNoSendMessagesPermission); return; } switch (RiasUtilities.TryParseMessage(message, out var customMessage)) { case true when string.IsNullOrEmpty(customMessage.Content) && customMessage.Embed is null: await ReplyErrorAsync(Localization.AdministrationNullCustomMessage); return; case true: await channel.SendMessageAsync(customMessage.Content, customMessage.Embed); break; default: await channel.SendMessageAsync(message); break; } await ReplyConfirmationAsync(Localization.BotMessageSent); }
public async Task SendAsync(string id, [Remainder] string message) { if (!id.StartsWith("u:", StringComparison.InvariantCultureIgnoreCase)) { if (!ulong.TryParse(id, out var channelId)) { await ReplyErrorAsync(Localization.AdministrationTextChannelNotFound); return; } var channel = RiasBot.Client.ShardClients .SelectMany(x => x.Value.Guilds) .SelectMany(x => x.Value.Channels) .FirstOrDefault(x => x.Key == channelId).Value; if (channel is null) { await ReplyErrorAsync(Localization.AdministrationTextChannelNotFound); return; } if (channel.Type != ChannelType.Text && channel.Type != ChannelType.News && channel.Type != ChannelType.Store) { await ReplyErrorAsync(Localization.BotChannelNotTextChannel); return; } var permissions = channel.Guild.CurrentMember.PermissionsIn(channel); if (!permissions.HasPermission(Permissions.AccessChannels)) { await ReplyErrorAsync(Localization.AdministrationTextChannelNoViewPermission); return; } if (!permissions.HasPermission(Permissions.SendMessages)) { await ReplyErrorAsync(Localization.BotTextChannelNoSendMessagesPermission); return; } switch (RiasUtilities.TryParseMessage(message, out var customMessage)) { case true when string.IsNullOrEmpty(customMessage.Content) && customMessage.Embed is null: await ReplyErrorAsync(Localization.AdministrationNullCustomMessage); return; case true: await channel.SendMessageAsync(customMessage.Content, customMessage.Embed); break; default: await channel.SendMessageAsync(message); break; } await ReplyConfirmationAsync(Localization.BotMessageSent); } else { DiscordMember member; if (ulong.TryParse(id[2..], out var userId) && RiasBot.Members.TryGetValue(userId, out var m))
public async Task EditAsync([TextChannel] DiscordChannel channel, ulong messageId, [Remainder] string message) { var permissions = channel.Guild.CurrentMember.PermissionsIn(channel); if (!permissions.HasPermission(Permissions.AccessChannels)) { await ReplyErrorAsync(Localization.AdministrationTextChannelNoViewPermission); return; } if (!permissions.HasPermission(Permissions.SendMessages)) { await ReplyErrorAsync(Localization.BotTextChannelNoSendMessagesPermission); return; } var discordMessage = await channel.GetMessageAsync(messageId); if (discordMessage is null) { await ReplyErrorAsync(Localization.BotMessageNotFound); return; } if (discordMessage.MessageType != MessageType.Default) { await ReplyErrorAsync(Localization.BotMessageNotUserMessage); return; } if (discordMessage.Author.Id != channel.Guild.CurrentMember.Id) { await ReplyErrorAsync(Localization.BotMessageNotSelf); return; } switch (RiasUtilities.TryParseMessage(message, out var customMessage)) { case true when string.IsNullOrEmpty(customMessage.Content) && customMessage.Embed is null: await ReplyErrorAsync(Localization.AdministrationNullCustomMessage); return; case true: await discordMessage.ModifyAsync(customMessage.Content, customMessage.Embed?.Build() ?? (Optional <DiscordEmbed>) default); break; default: await discordMessage.ModifyAsync(message); break; } await ReplyConfirmationAsync(Localization.BotMessageEdited); }