thecatcore / Fabric---Discord-Link

MIT License
75 stars 31 forks source link

Permissions Error Exception should not cause whole server to stop #156

Closed daniel-widrick closed 3 years ago

daniel-widrick commented 3 years ago

Describe the bug net.dv8tion.jda.api.exceptions.InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MESSAGE_WRITE

When permissions to send to a channel are revoked, the code throws an exception and causes the server close

Reproduction steps Get bot working normally. Assign a new role to the bot in the discord Modify the channel's permission so that the role cannot send messages. (essentially revoke "Send message" permission once bot is running)

Expected behaviour The code catches the exception, prints a helpful log message and doesn't crash the whole server

Crash report ``` [08:34:47] [Server thread/ERROR]: Encountered an unexpected exception net.dv8tion.jda.api.exceptions.InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MESSAGE_WRITE at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:329) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:320) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at net.dv8tion.jda.internal.entities.TextChannelImpl.sendMessage(TextChannelImpl.java:347) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendToChatChannels(DiscordBot.java:334) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendToChatChannels(DiscordBot.java:298) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.serverStarting(DiscordBot.java:98) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.FDLink1_16.lambda$onInitializeServer$2(FDLink1_16.java:72) ~[d0e10cff-e164-4624-a410-79a8d3ecf12a.jar:?] at net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents.lambda$static$0(ServerLifecycleEvents.java:37) ~[8343a554-35dc-4d1a-a713-fa56d70f0e04.jar:?] at net.minecraft.server.MinecraftServer.handler$zzc000$beforeSetupServer(MinecraftServer.java:1804) ~[intermediary-server.jar:?] at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:665) ~[intermediary-server.jar:?] at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:274) ~[intermediary-server.jar:?] at java.lang.Thread.run(Thread.java:831) [?:?] [08:34:47] [Server thread/ERROR]: This crash report has been saved to: /home/minecraft-202106/./crash-reports/crash-2021-06-23_08.34.47-server.txt [08:34:47] [Server thread/INFO]: BlueMap unloaded! [08:34:47] [Server thread/ERROR]: Exception stopping the server net.dv8tion.jda.api.exceptions.InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MESSAGE_WRITE at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:329) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at net.dv8tion.jda.internal.entities.AbstractChannelImpl.checkPermission(AbstractChannelImpl.java:320) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at net.dv8tion.jda.internal.entities.TextChannelImpl.sendMessage(TextChannelImpl.java:347) ~[afa75ae8-7810-4d6f-9b0f-737026d94b7a.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendToChatChannels(DiscordBot.java:334) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.sendToChatChannels(DiscordBot.java:298) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.discordstuff.DiscordBot.serverStopping(DiscordBot.java:116) ~[b6acd86d-36ed-4150-b093-124fa9fc729d.jar:?] at fr.arthurbambou.fdlink.FDLink1_16.lambda$onInitializeServer$4(FDLink1_16.java:74) ~[d0e10cff-e164-4624-a410-79a8d3ecf12a.jar:?] at net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents.lambda$static$4(ServerLifecycleEvents.java:62) ~[8343a554-35dc-4d1a-a713-fa56d70f0e04.jar:?] at net.minecraft.server.MinecraftServer.handler$zzc000$beforeShutdownServer(MinecraftServer.java:1814) ~[intermediary-server.jar:?] at net.minecraft.server.MinecraftServer.method_3782(MinecraftServer.java) ~[intermediary-server.jar:?] at net.minecraft.class_3176.method_3782(class_3176.java:584) ~[intermediary-server.jar:?] at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:729) ~[intermediary-server.jar:?] at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:274) ~[intermediary-server.jar:?] at java.lang.Thread.run(Thread.java:831) [?:?] ```

Additional context

fdlink.json Please attach your configuration file (fdlink.json) here (edit the token out)