discord.go 872 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package providers
  2. import (
  3. "git.wenlab.co/joe/beaconfire"
  4. "github.com/bwmarrin/discordgo"
  5. )
  6. const (
  7. DISCORD_NAME = "discord"
  8. )
  9. type OptionsDiscord struct {
  10. AuthToken string
  11. To []string
  12. }
  13. type discord struct {
  14. opt *OptionsDiscord
  15. }
  16. var _ beaconfire.BeaconFire = &discord{}
  17. func NewDiscord(opt *OptionsDiscord) *discord {
  18. return &discord{
  19. opt: opt,
  20. }
  21. }
  22. func (c discord) Name() string {
  23. return DISCORD_NAME
  24. }
  25. func (c *discord) Send(bp *beaconfire.BeaconParam) error {
  26. if len(c.opt.To) <= 0 {
  27. return beaconfire.ErrNoReceiver
  28. }
  29. discord, err := discordgo.New("Bot " + c.opt.AuthToken)
  30. if err != nil {
  31. return err
  32. }
  33. if err = discord.Open(); err != nil {
  34. return err
  35. }
  36. defer discord.Close()
  37. for _, channel := range c.opt.To {
  38. if _, err := discord.ChannelMessageSend(channel, bp.Content); err != nil {
  39. return err
  40. }
  41. }
  42. return nil
  43. }