1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2025-07-29 17:02:27 +00:00

Compare commits

..

No commits in common. "f4635803eec573e2ba6a692b0b7dd7f0d3556908" and "3230916c4588ef2f869a43137d52bbaddfcea23c" have entirely different histories.

4 changed files with 17 additions and 58 deletions

View file

@ -1,43 +1,21 @@
# arikawa # arikawa
[![ Pipeline Status ][pipeline_img ]][pipeline ] [![Pipeline status](https://gitlab.com/diamondburned/arikawa/badges/v2/pipeline.svg?style=flat-square)](https://gitlab.com/diamondburned/arikawa/pipelines )
[![ Coverage ][coverage_img ]][pipeline ] [![ Coverage](https://gitlab.com/diamondburned/arikawa/badges/v2/coverage.svg?style=flat-square)](https://gitlab.com/diamondburned/arikawa/commits/v2 )
[![ Report Card ][goreportcard_img]][goreportcard] [![ Report Card](https://goreportcard.com/badge/github.com/diamondburned/arikawa?style=flat-square )](https://goreportcard.com/report/github.com/diamondburned/arikawa)
[![ Godoc Reference ][pkg.go.dev_img ]][pkg.go.dev ] [![Godoc Reference](https://img.shields.io/badge/godoc-reference-blue?style=flat-square )](https://pkg.go.dev/github.com/diamondburned/arikawa )
[![ Examples ][examples_img ]][examples ] [![ Examples](https://img.shields.io/badge/Example-__example%2F-blueviolet?style=flat-square )](https://github.com/diamondburned/arikawa/tree/v2/_example )
[![ Discord Gophers ][dgophers_img ]][dgophers ] [![Discord Gophers](https://img.shields.io/badge/Discord%20Gophers-%23arikawa-%237289da?style=flat-square)](https://discord.gg/7jSf85J )
[![ Hime Arikawa ][himeArikawa_img ]][himeArikawa ] [![ Hime Arikawa](https://img.shields.io/badge/Hime-Arikawa-ea75a2?style=flat-square )](https://hime-goto.fandom.com/wiki/Hime_Arikawa )
A Golang library for the Discord API. A Golang library for the Discord API.
[dgophers]: https://discord.gg/7jSf85J
[dgophers_img]: https://img.shields.io/badge/Discord%20Gophers-%23arikawa-%237289da?style=flat-square
[examples]: https://github.com/diamondburned/arikawa/tree/v2/_example
[examples_img]: https://img.shields.io/badge/Example-__example%2F-blueviolet?style=flat-square
[pipeline]: https://gitlab.com/diamondburned/arikawa/pipelines
[pipeline_img]: https://gitlab.com/diamondburned/arikawa/badges/v2/pipeline.svg?style=flat-square
[coverage_img]: https://gitlab.com/diamondburned/arikawa/badges/v2/coverage.svg?style=flat-square
[pkg.go.dev]: https://pkg.go.dev/github.com/diamondburned/arikawa/v2
[pkg.go.dev_img]: https://pkg.go.dev/badge/github.com/diamondburned/arikawa/v2
[himeArikawa]: https://hime-goto.fandom.com/wiki/Hime_Arikawa
[himeArikawa_img]: https://img.shields.io/badge/Hime-Arikawa-ea75a2?style=flat-square
[goreportcard]: https://goreportcard.com/report/github.com/diamondburned/arikawa
[goreportcard_img]: https://goreportcard.com/badge/github.com/diamondburned/arikawa?style=flat-square
## Examples ## Examples
### [Simple](https://github.com/diamondburned/arikawa/tree/master/_example/simple) ### [Simple](https://github.com/diamondburned/arikawa/tree/master/_example/simple)
Simple bot example without any state. All it does is logging messages sent into Simple bot example without any state. All it does is logging messages sent into
the console. Run with `BOT_TOKEN="TOKEN" go run .`. This example only the console. Run with `BOT_TOKEN="TOKEN" go run .`.
demonstrates the most simple needs; in most cases, bots should use the state or
the bot router.
### [Undeleter](https://github.com/diamondburned/arikawa/tree/master/_example/undeleter) ### [Undeleter](https://github.com/diamondburned/arikawa/tree/master/_example/undeleter)
@ -45,19 +23,18 @@ A slightly more complicated example. This bot uses a local state to cache
everything, including messages. It detects when someone deletes a message, everything, including messages. It detects when someone deletes a message,
logging the content into the console. logging the content into the console.
This example demonstrates the PreHandler feature of the state library. This example demonstrates the PreHandler feature of this library. PreHandler
PreHandler calls all handlers that are registered (separately from the session), calls all handlers that are registered (separately from the session), calling
calling them before the state is updated. them before the state is updated.
### [Advanced Bot](https://github.com/diamondburned/arikawa/tree/master/_example/advanced_bot) ### [Advanced Bot](https://github.com/diamondburned/arikawa/tree/master/_example/advanced_bot)
A complex example demonstrating the reflect-based command router that's A pretty complicated example demonstrating the reflect-based command router
built-in. The router turns exported struct methods into commands, its arguments that's built-in. The router turns exported struct methods into commands, its
into command arguments, and more. arguments into command arguments, and more.
The library is documented in details in the [package
documentation](https://pkg.go.dev/github.com/diamondburned/arikawa/bot).
The library has a pretty detailed documentation available in [GoDoc
Reference](https://pkg.go.dev/github.com/diamondburned/arikawa/bot).
## Comparison: Why not discordgo? ## Comparison: Why not discordgo?
@ -86,7 +63,6 @@ custom remote or local state storage.
things in the state, which is useful for keeping it updated. things in the state, which is useful for keeping it updated.
- No code generation: just so the library is a lot easier to maintain. - No code generation: just so the library is a lot easier to maintain.
## Testing ## Testing
The package includes integration tests that require `$BOT_TOKEN`. To run these The package includes integration tests that require `$BOT_TOKEN`. To run these
@ -94,5 +70,5 @@ tests, do:
```sh ```sh
export BOT_TOKEN="<BOT_TOKEN>" export BOT_TOKEN="<BOT_TOKEN>"
go test -tags integration -race ./... go test -tags integration ./...
``` ```

View file

@ -1,5 +1,3 @@
// Package main demonstrates an advanced bot that uses the bot router library to
// make commands.
package main package main
import ( import (
@ -26,10 +24,6 @@ func main() {
// Subcommand demo, but this can be in another package. // Subcommand demo, but this can be in another package.
ctx.MustRegisterSubcommand(&Debug{}) ctx.MustRegisterSubcommand(&Debug{})
// The bot package will automatically derive out Gateway intents. It
// might not catch everything though, so a ctx.Gateway.AddIntents is
// always available.
return nil return nil
}) })

View file

@ -1,5 +1,3 @@
// Package main demonstrates a bare simple bot without a state cache. It logs
// all messages it sees into stderr.
package main package main
import ( import (
@ -32,10 +30,6 @@ func main() {
} }
defer s.Close() defer s.Close()
// Add the needed Gateway intents.
s.Gateway.AddIntents(gateway.IntentGuildMessages)
s.Gateway.AddIntents(gateway.IntentDirectMessages)
u, err := s.Me() u, err := s.Me()
if err != nil { if err != nil {
log.Fatalln("Failed to get myself:", err) log.Fatalln("Failed to get myself:", err)

View file

@ -1,4 +1,3 @@
// Package main demonstrates the PreHandler API of the State.
package main package main
import ( import (
@ -36,10 +35,6 @@ func main() {
} }
}) })
// Add the needed Gateway intents.
s.Gateway.AddIntents(gateway.IntentGuildMessages)
s.Gateway.AddIntents(gateway.IntentDirectMessages)
if err := s.Open(); err != nil { if err := s.Open(); err != nil {
log.Fatalln("Failed to connect:", err) log.Fatalln("Failed to connect:", err)
} }