re-incarnation
@re-incarnation

DiscordGo Activity, как поставить?

Как на модуле discordgo выставить активность для бота?
P.S. Я нашел в документации про активность, но честно я в голанге не давно, и не понимаю как её преобразовать в рабочую функцию.
// из документации
func (s *Session) UpdateListeningStatus(game string) (err error) {
    return s.UpdateStatusComplex(*newUpdateStatusData(0, GameTypeListening, game, ""))
}


func setActivity(s *discordgo.Session)  {
  err := s.UpdateListeningStatus("something")
  if err != nil {
    panic(err)
  }
}


UPD: Исходя от коментария от добряка ниже добавил сюда код, но осталась ошибка. Как и где нужно объявить UpdateListeningStatus ?

Полная версия кода:
package main

import (
	"fmt"
  "github.com/bwmarrin/discordgo"
)

const token string = "token"

var BotID string

func main(){
  dg, err := discordgo.New("Bot " + token)

  if err != nil {
    fmt.Println(err.Error())
    return
  }

  u, err := dg.User("@me")

  if err != nil {
    fmt.Println(err.Error())
  }

  BotID = u.ID

	dg.AddHandler(messageHandler)


  err = dg.Open()

  if err != nil {
    fmt.Println(err.Error())
    return
  }
  fmt.Println("Bot successfully started")

  <-make(chan struct{})
  return

}

	func messageHandler(s *discordgo.Session, m *discordgo.MessageCreate){
		fmt.Println("Chat message: " + m.Content)
}

func setActivity(s *discordgo.Session)  {
  err := s.UpdateListeningStatus("something")
  if err != nil {
    panic(err)
  }
}
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
@TchTech
Решил через discordgo.Ready. У меня сработало.
func main() {
	dg, err := discordgo.New("Bot " + Token)
	if err != nil {
		fmt.Println("error creating Discord session,", err)
		return
	}
	dg.AddHandler(setActivity)
	dg.Identify.Intents = discordgo.IntentsGuildMessages
	err = dg.Open()
	if err != nil {
		fmt.Println("error opening connection,", err)
		return
	}
	sc := make(chan os.Signal, 1)
	signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
	<-sc
	dg.Close()
}

func setActivity(s *discordgo.Session, r *discordgo.Ready) {
	err := s.UpdateListeningStatus("Пропишите b!games;")
	if err != nil {
		panic(err)
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы