If someone goes live, check for the most recent notification message that was sent to Discord and delete. Then send a new message with the appropriate pings (if set)
Provide a way to see/export all subscriptions for a server in one easy method, rather than flipping through the cards view.
Going one at a time for each subscription is tedious for servers such as community servers.
Suggestion from tsukana in Discord:
Is it possible for a command to generate an actual list of all the channels being monitored rather than the flip through card message to be able to see an overview?
Create/Discover an easy way to find the most recent notification for a particular stream and guild combo that was sent out. Create new StreamNotification if it changed to keep track of that stuff
Due to limitations of Discord, only 25 roles can be displayed in a dropdown, however it's very feasible for a Discord server to have more than 25 roles.
This causes users to be unable to select the roles they want pinged for a monitor.
A new way of adding/removing roles to be mentioned needs to be developed.
Because of permission checks before create/edit, not all users want the embed of the bot, and so it should only do a check for View Channel and Send Message.
Anything outside of that should be completely up to the server admins
There may be a chance Discord throws an "Unknown Channel" error if the guild is unavailable for whatever reason.
Look into a way to determine if the guild is unavailable before publishing a channel delete
System.ArgumentNullException: Value cannot be null.(Parameter 'source')
at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
at LiveBot.Discord.SlashCommands.Helpers.NotificationHelpers.GetNotificationMessage(SocketGuild guild, ILiveBotStream stream, StreamSubscription subscription, ILiveBotUser user, ILiveBotGame game)in/src/LiveBot.Discord.SlashCommands/Helpers/NotificationHelpers.cs:line 59
at LiveBot.Discord.SlashCommands.Modules.MonitorModule.CheckStreamAsync(Uri ProfileURL)in/src/LiveBot.Discord.SlashCommands/Modules/MonitorModule.cs:line 271
at Discord.Interactions.Builders.ModuleClassBuilder.<>c__DisplayClass11_0.<<CreateCallback>g__ExecuteCallback|1>d.MoveNext()
Since Application Command Permissions (hereinafter "ACP") v2, Discord provides UI for setting up permissions for bots in way more intuitive and consistent way than doing so via random command or dashboard, it would be good if the bot is compatible with ACP.
That being said, I suggest following things:
Drop any hard permission requirements across all commands, just let Discord handle them
Set default_member_permissions for /monitor to Manage Server
Set default_member_permissions for /config to Administrator
Remove admin-role option from /config command, as Discord's native ACP UI replaces it (and it cannot work with ACP without applications.commands.permissions.update OAuth2 scope anyway)
This is due to rate limits and getting the entire bot down when exceeding them due to too many requests per second overall.
Switching to socket will allow for it all to be centrally managed by the discord.net library.
Create an page to show statistics such as how many notifications were sent out on a specific date, maybe how many people played a certain game, etc etc
This should output information about the server, similar to the admin command
Also should include the monitor role configuration for easy verification settings were saved correctly