diff options
Diffstat (limited to 'bridge/discord/transmitter/utils.go')
-rw-r--r-- | bridge/discord/transmitter/utils.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/bridge/discord/transmitter/utils.go b/bridge/discord/transmitter/utils.go new file mode 100644 index 00000000..f42e81eb --- /dev/null +++ b/bridge/discord/transmitter/utils.go @@ -0,0 +1,32 @@ +package transmitter + +import ( + "github.com/matterbridge/discordgo" +) + +// isDiscordPermissionError returns false for nil, and true if a Discord RESTError with code discordgo.ErrorCodeMissionPermissions +func isDiscordPermissionError(err error) bool { + if err == nil { + return false + } + + restErr, ok := err.(*discordgo.RESTError) + if !ok { + return false + } + + return restErr.Message != nil && restErr.Message.Code == discordgo.ErrCodeMissingPermissions +} + +// getDiscordUserID gets own user ID from state, and fallback on API request +func getDiscordUserID(session *discordgo.Session) (string, error) { + if user := session.State.User; user != nil { + return user.ID, nil + } + + user, err := session.User("@me") + if err != nil { + return "", err + } + return user.ID, nil +} |