Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions events.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,11 @@ type eventDispatcher struct {

msgCache *dispatchMsgCache // in-memory message cache for snipe/edit context

onReady []ReadyHandler
onMessageCreate []MessageCreateHandler
onMessageUpdate []MessageUpdateHandler
onMessageUpdateEvent []MessageUpdateEventHandler
onMessageDelete []MessageDeleteHandler
onReady []ReadyHandler
onMessageCreate []MessageCreateHandler
onMessageUpdate []MessageUpdateHandler
onMessageUpdateEvent []MessageUpdateEventHandler
onMessageDelete []MessageDeleteHandler
onGuildCreate []GuildCreateHandler
onGuildDelete []GuildDeleteHandler
onReactionAdd []ReactionAddHandler
Expand Down
55 changes: 55 additions & 0 deletions guild_incidents.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package discord

// guild_incidents.go - Guild Security Actions (Pause Invites / Pause DMs).
//
// Wraps Discord REST API v10's
// PUT /guilds/{guild.id}/incident-actions
// endpoint, which sets the same "Security Actions" panel that staff operate
// from the guild's Safety Setup settings. Requires the MANAGE_GUILD
// permission. Each timer is capped at 24 hours by Discord - to keep the
// panel active indefinitely the caller must re-issue the request before the
// current window elapses.

import (
"net/http"
"time"
)

// IncidentsData mirrors Discord's guild "incidents_data" object. All four
// fields are RFC3339 timestamp strings (or nil) and are pointers so the
// caller can explicitly tell the difference between "leave unchanged"
// (absent) and "clear the timer" (null). DMSpamDetectedAt and
// RaidDetectedAt are read-only fields populated by Discord when it
// auto-detects activity; they are included here so the decoded response
// is not silently dropped.
type IncidentsData struct {
InvitesDisabledUntil *string `json:"invites_disabled_until,omitempty"`
DMsDisabledUntil *string `json:"dms_disabled_until,omitempty"`
DMSpamDetectedAt *string `json:"dm_spam_detected_at,omitempty"`
RaidDetectedAt *string `json:"raid_detected_at,omitempty"`
}

// ModifyGuildIncidentActions toggles the guild's "Security Actions" timers
// (Pause Invites / Pause DMs). Pass a non-nil time.Time to set a timer
// until that instant; pass nil to clear the corresponding timer. Discord
// caps each timer at 24 hours; values further out are still accepted by
// the API but will be truncated to the 24-hour limit server-side.
//
// Requires MANAGE_GUILD.
func (r *RestClient) ModifyGuildIncidentActions(guildID string, invitesDisabledUntil, dmsDisabledUntil *time.Time) (*IncidentsData, error) {
body := map[string]interface{}{
"invites_disabled_until": nil,
"dms_disabled_until": nil,
}
if invitesDisabledUntil != nil {
body["invites_disabled_until"] = invitesDisabledUntil.UTC().Format(time.RFC3339)
}
if dmsDisabledUntil != nil {
body["dms_disabled_until"] = dmsDisabledUntil.UTC().Format(time.RFC3339)
}
var out IncidentsData
if err := r.do(http.MethodPut, "/guilds/"+guildID+"/incident-actions", body, &out); err != nil {
return nil, err
}
return &out, nil
}
84 changes: 42 additions & 42 deletions permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -438,50 +438,50 @@ func (p Permission) String() string {
// ---------------------------------------------------------------------------

const (
PermissionCreateInstantInvite = PermCreateInstantInvite
PermissionKickMembers = PermKickMembers
PermissionBanMembers = PermBanMembers
PermissionAdministrator = PermAdministrator
PermissionManageChannels = PermManageChannels
PermissionManageGuild = PermManageGuild
PermissionAddReactions = PermAddReactions
PermissionViewAuditLog = PermViewAuditLog
PermissionPrioritySpeaker = PermPrioritySpeaker
PermissionStream = PermStream
PermissionViewChannel = PermViewChannel
PermissionSendMessages = PermSendMessages
PermissionSendTTSMessages = PermSendTTSMessages
PermissionManageMessages = PermManageMessages
PermissionEmbedLinks = PermEmbedLinks
PermissionAttachFiles = PermAttachFiles
PermissionReadMessageHistory = PermReadMessageHistory
PermissionMentionEveryone = PermMentionEveryone
PermissionUseExternalEmojis = PermUseExternalEmojis
PermissionViewGuildInsights = PermViewGuildInsights
PermissionConnect = PermConnect
PermissionSpeak = PermSpeak
PermissionMuteMembers = PermMuteMembers
PermissionDeafenMembers = PermDeafenMembers
PermissionMoveMembers = PermMoveMembers
PermissionUseVAD = PermUseVAD
PermissionChangeNickname = PermChangeNickname
PermissionManageNicknames = PermManageNicknames
PermissionManageRoles = PermManageRoles
PermissionManageWebhooks = PermManageWebhooks
PermissionCreateInstantInvite = PermCreateInstantInvite
PermissionKickMembers = PermKickMembers
PermissionBanMembers = PermBanMembers
PermissionAdministrator = PermAdministrator
PermissionManageChannels = PermManageChannels
PermissionManageGuild = PermManageGuild
PermissionAddReactions = PermAddReactions
PermissionViewAuditLog = PermViewAuditLog
PermissionPrioritySpeaker = PermPrioritySpeaker
PermissionStream = PermStream
PermissionViewChannel = PermViewChannel
PermissionSendMessages = PermSendMessages
PermissionSendTTSMessages = PermSendTTSMessages
PermissionManageMessages = PermManageMessages
PermissionEmbedLinks = PermEmbedLinks
PermissionAttachFiles = PermAttachFiles
PermissionReadMessageHistory = PermReadMessageHistory
PermissionMentionEveryone = PermMentionEveryone
PermissionUseExternalEmojis = PermUseExternalEmojis
PermissionViewGuildInsights = PermViewGuildInsights
PermissionConnect = PermConnect
PermissionSpeak = PermSpeak
PermissionMuteMembers = PermMuteMembers
PermissionDeafenMembers = PermDeafenMembers
PermissionMoveMembers = PermMoveMembers
PermissionUseVAD = PermUseVAD
PermissionChangeNickname = PermChangeNickname
PermissionManageNicknames = PermManageNicknames
PermissionManageRoles = PermManageRoles
PermissionManageWebhooks = PermManageWebhooks
PermissionManageGuildExpressions = PermManageGuildExpressions
PermissionUseApplicationCommands = PermUseApplicationCommands
PermissionRequestToSpeak = PermRequestToSpeak
PermissionManageEvents = PermManageEvents
PermissionManageThreads = PermManageThreads
PermissionCreatePublicThreads = PermCreatePublicThreads
PermissionCreatePrivateThreads = PermCreatePrivateThreads
PermissionUseExternalStickers = PermUseExternalStickers
PermissionSendMessagesInThreads = PermSendMessagesInThreads
PermissionUseEmbeddedActivities = PermUseEmbeddedActivities
PermissionModerateMembers = PermModerateMembers
PermissionSendVoiceMessages = PermSendVoiceMessages
PermissionSendPolls = PermSendPolls
PermissionUseExternalApps = PermUseExternalApps
PermissionRequestToSpeak = PermRequestToSpeak
PermissionManageEvents = PermManageEvents
PermissionManageThreads = PermManageThreads
PermissionCreatePublicThreads = PermCreatePublicThreads
PermissionCreatePrivateThreads = PermCreatePrivateThreads
PermissionUseExternalStickers = PermUseExternalStickers
PermissionSendMessagesInThreads = PermSendMessagesInThreads
PermissionUseEmbeddedActivities = PermUseEmbeddedActivities
PermissionModerateMembers = PermModerateMembers
PermissionSendVoiceMessages = PermSendVoiceMessages
PermissionSendPolls = PermSendPolls
PermissionUseExternalApps = PermUseExternalApps
)

// HasPermission reports whether the member holds the given permission bit.
Expand Down
Loading