1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2024-11-01 04:24:19 +00:00
Commit graph

226 commits

Author SHA1 Message Date
diamondburned 17b9c73ce3
gateway: Refactor for a better concurrent API
This commit refactors the whole package gateway as well as utils/ws
(formerly utils/wsutil) and voice/voicegateway. The new refactor
utilizes a design pattern involving a concurrent loop and an arriving
event channel.

An additional change was made to the way gateway events are typed.
Before, pretty much any type will satisfy a gateway event type, since
the actual type was just interface{}. The new refactor defines a
concrete interface that events can implement:

    type Event interface {
        Op() OpCode
        EventType() EventType
    }

Using this interface, the user can easily add custom gateway events
independently of the library without relying on string maps. This adds a
lot of type safety into the library and makes type-switching on Event
types much more reasonable.

Gateway error callbacks are also almost entirely removed in favor of
custom gateway events. A catch-all can easily be added like this:

    s.AddHandler(func(err error) {
        log.Println("gateway error:, err")
    })
2021-11-25 14:46:41 -08:00
diamondburned 5c88317130
api: Fix CreateInteractionFollowup return 2021-11-23 22:53:27 -08:00
diamondburned 331ec59dec discord: Refactor interactions and components
This commit gets rid of contain-it-all structs and instead opt for
interface union types containing underlying concrete types with no
overloading.

The code is much more verbose by doing this, but the API is much nicer
to use. The only disadvantage in that regard is the interface assertion
being too verbose and risky for users at times.
2021-11-12 11:38:36 -08:00
Hamza Ali 6fba21d704
api: Implement autocomplete components 2021-11-09 14:49:21 -08:00
samhza bfb644c124
api: Add CurrentApplication (#282)
* discord/api: support fetching bot's Application

* Update api/application.go

Co-authored-by: diamondburned <diamond@arikawa-hi.me>

Co-authored-by: diamondburned <diamond@arikawa-hi.me>
2021-10-03 13:31:48 -07:00
starshines ca70e0cca9
discord: Add per-guild avatars, ModifyMe -> ModifyCurrentUser (#278)
* v3: discord, api, gateway: add per-guild avatars

* api: rename ModifyMe to ModifyCurrentUser
2021-09-28 11:46:36 -07:00
samhza dc92845315
discord: move Interaction over; update api.CommandCreateData (#274)
- Moved gateway.InteractionCreateData to discord.Interaction, now
gateway.InteractionCreateData is a struct that wraps
discord.Interaction.
- Split InteractionData into CommandInteractionData and
ComponentInteractionData.
- Renamed ButtonInteraction to ComponentInteraction.
- Updated api.CommandCreateData to add new fields.
- Update Component types' Type() methods to pointer receivers.
2021-09-09 16:06:44 -07:00
Maximilian von Lindern 53c72c1e16 option: Move conflicting types into package discord 2021-08-30 13:23:43 -07:00
Maximilian von Lindern f334491dee
api: Mutate validated embeds from discord.Embed.Validate (#271) 2021-08-24 11:23:49 -07:00
rigormorrtiss 1e9eb4a473
api: *Client.ActiveThreads returns ActiveThreads struct (#270)
* v3: api: *Client.ActiveThreads returns ActiveThread struct

* Apply suggestions
2021-08-20 02:27:53 -07:00
Maximilian von Lindern b61179d188 api: Remove Client.Kick and rename .KickWithReason to .Kick 2021-08-18 11:31:16 -07:00
rigormorrtiss b253a5659b
discord: Add Invitable field for threads (#268) 2021-08-16 22:37:33 -07:00
Maximilian von Lindern 525e8d527b api: More multiple embed support for send functions (#266)
* api: Adapt Client.EditMessage, SendEmbedReply, and SendMessageReply to take in
  multiple embeds

* api: Fix incorrect use of Client.EditMessage

* api: Make EditMessage omit empty content or embeds from payload
2021-08-16 02:26:25 -07:00
Maximilian von Lindern 19335e5050 api: Pointerize return types for consistency
Pointerize Client.Command, .GuildCommand, .CommandPermissions, and .EditCommandPermissions for consistency
2021-08-15 12:29:30 -07:00
Maximilian von Lindern 244570c280
api: Add support for the X-Audit-Log-Reason header (#259)
* api: add support for the X-Audit-Log-Reason header

* api: inline reason parameter, where data struct has a single field
2021-08-15 18:33:33 +02:00
Nat dbfc49fb08
API: Fix Client.{Guild,}Command() (#264) 2021-08-14 22:27:22 -07:00
Maximilian von Lindern 955bb2aad2
api: Make some InteractionResponseData fields nullable (#256)
* api: make InteractionResponseData.Content, .Embeds, and .Components nullable

* Fix examples

* Remove test code

* fix commands example
2021-08-08 13:20:54 -07:00
Maximilian von Lindern c00567599b
api: Threads (#257)
* api/gateway: Implement threads

* discord/api: rename PermissionOverwrites fields to Overwrites

* discord: rename Minutes to ArchiveDuration

* discord: Rename ArchiveDuration constants

Co-authored-by: diamondburned <datutbrus@gmail.com>
2021-08-08 13:19:15 -07:00
Maximilian von Lindern 101fe46313
api: Add missing slash command endpoints (#252)
* api: add missing slash command endpoints
* fix examples
* api: Remove Original prefix from Client.OriginalInteractionResponse,
  EditOriginalResponse, and DeleteOriginalResponse
2021-08-03 11:44:20 -07:00
diamondburned d4c66d4971 api: Omitted SearchData redundant option type 2021-06-26 17:04:00 -07:00
samhza 7bc2be1498
api: Add search endpoint (#236)
Co-authored-by: Terra Brown <superloach42@gmail.com>
2021-06-25 12:29:14 -07:00
samhza 354199383a
api: Remove Client.SendText (#234)
SendMessage(a, b) is equivalent to SendText(a, b) so SendText is
redundant.

Programs using SendText can be updated with

    $ gofmt -r 'c.SendText(a, b) -> c.SendMessage(a, b)' -w .
2021-06-22 17:48:16 -07:00
samhza 37b8871c65
api: Update sending/editing messages for v9 (#230)
api.{Send,Edit}MessageData and their equivalents in package api/webhook
have been updated to add some fields added in Discord API v9.
(webhook.Client).EditMessage now also returns a message, because that
endpoint returns a message on success.
2021-06-17 23:32:11 -07:00
Hamza Ali 134f49d00f discord: Add Flags field to InteractionResponseData 2021-06-14 15:23:08 -07:00
diamondburned 68313eb872 discord: Fix Channel not unmarshaling 2021-06-14 15:23:08 -07:00
diamondburned 5b328bdab0 shard: Remake shard manager (#226) 2021-06-14 15:22:55 -07:00
Samuel Hernandez af3bedc472 api: allow interaction responses to include files
function RespondInteraction doesn't return a message.
systemPkgs
2021-06-10 16:58:10 -07:00
Maximilian von Lindern f1f4f06979
*: Rename error types to have Error suffix (#215) 2021-06-06 12:40:24 -07:00
Samuel Hernandez 40e1a3757d *: Migrated Go Modules to v3 2021-06-01 19:59:01 -07:00
Maximilian von Lindern 428ef4ac70 rate: Add rate.AcquireOptions 2021-05-29 22:25:52 -07:00
Maximilian von Lindern 5a1837a094 discord/api: Add StageInstances 2021-05-29 22:17:39 -07:00
Maximilian von Lindern 6f73088e7d api/discord: Add RTCRegionID and VoiceQuality 2021-05-29 22:07:39 -07:00
Scott 10c8837000 api: Finalized buttons implementation (#200)
* all: Added Components fields to message-related types
* discord: Documented Reactions field
* discord: Implement fix for Component
* gateway: Added User and Message fields to InteractionCreateEvent
* api: Made InteractionResponseData fields optional for UpdateMessage responses
* api: Deprecated and updated interaction response types
* gateway: Update optional interaction event fields
* discord: Added ComponentWrap for json unmarshalling
* state: Update components on MessageUpdate
* Updated buttons example
2021-05-29 21:32:33 -07:00
Maximilian von Lindern e04b19eb0f api: Increase arikawa version in UserAgent to v3 2021-05-29 21:32:31 -07:00
Maximilian von Lindern 0119944b28 api/gateway: Increase API and gateways versions to 9 2021-05-29 21:32:20 -07:00
unknown a7d87a7dd0 api: Use MessageFlags const 2021-05-29 14:16:44 -07:00
Chan Wen Xu c880cb2fc8 interaction: Implement buttons 2021-05-29 14:16:44 -07:00
Maximilian von Lindern 7785887719 API: Update the Client.CreateChannel docs to mention the recent permission change 2021-05-29 12:40:10 -07:00
Maximilian von Lindern ebc74e3168
Gateway: Sharding callback, proper closing (#190)
* Gateway: Fix gateway reconnect

This commit uses the correct timeout, Gateway.ReconnectTimeout, when reconnecting. Furthermore, it adds a delay between consecutive, failed reconnects.

* Gateway: Stop pacemaker when calling Gateway.CloseGracefully

* API: remove unnecessary leading/trailing whitespaces

* Gateway: Add Gateway.OnScalingRequired callback

* Gateway: Make all user initiated user closures graceful and ensure that closures are respected during reconnects

* Gateway: Fix typo

* Gateway: Add Gateway.ReconnectAttempts and deprecate .ReconnectTimeout

* Gateway: Add Gateway.Pause and reexport .Reconnect and .ReconnectCtx

* Gateway: Improve the Gateway.OnShardingRequired docs

* Wsutil: Code cleanup
2021-04-07 11:38:26 -07:00
Starshine System 37d285184a API: Add CrosspostMessage method 2021-04-06 15:34:28 -07:00
diamondburned 050c1b6497 Webhook: Add rate limiter and WithContext 2021-03-05 20:01:33 -08:00
diamondburned f5dc90c2d4 API: Add File.AttachmentURI for convenience 2021-02-24 01:59:33 -08:00
diamondburned 968112fb53 Discord: typed snowflake for Interaction 2021-02-17 17:41:19 -08:00
Scott abeaef8122
API: Added SendReply methods (#187)
* API: Added SendReply methods

* Grammar edit

* referenceID & adheres to 100 column limit
2021-02-14 12:29:41 -08:00
Matthew Penner 7c3374543e Discord: Add basic support for slash commands 2021-01-27 10:44:14 -08:00
diamondburned c6d8c741e8 CI: Add perseverance test for Gateway 2020-12-31 23:48:29 -08:00
diamondburned 2f6ab0d451 API: Fix atomic SIGSEGV in ARM 2020-12-31 10:24:51 -08:00
diamondburned 700b55102d API: Added JoinInvite 2020-12-31 00:16:43 -08:00
diamondburned f3f075b27f API: Add get Note endpoint 2020-12-26 16:13:10 -08:00
diamondburned d69d6750dc API: Separated min function 2020-12-26 16:08:41 -08:00