我想使用机器人在我的私人不和谐服务器的所有文本频道上发送消息。
我已关联并且可以拥有Session
个对象,但我不确定如何从Session
获取所有可用频道的列表。
dg, err := discordgo.New("Bot " + Token)
if err != nil {
fmt.Println("error creating Discord session,", err)
return
}
// Open a websocket connection to Discord and begin listening.
err = dg.Open()
if err != nil {
fmt.Println("error opening connection,", err)
return
}
// Get all channel ID's from dg here
使用discord API是否可以实现这一点?
答案 0 :(得分:1)
不知道这是否仍然与您有关,但是请其他任何想知道的人留在这里。
您所需要做的就是访问discordgo.Session
对象,dg
在您的情况下将完全相同。
有可能,但是您必须遍历该机器人有权访问的每个 Guild (服务器)。另外,如果您具有相关的公会ID或对象,则可以仅循环通过该公会的渠道。
func spam(s *discordgo.Session) {
// Loop through each guild in the session
for _, guild := range s.State.Guilds {
// Get channels for this guild
channels, _ := s.GuildChannels(guild.ID)
for _, c := range channels {
// Check if channel is a guild text channel and not a voice or DM channel
if c.Type != discordgo.ChannelTypeGuildText {
continue
}
// Send text message
s.ChannelMessageSend(
c.ID,
fmt.Sprintf("testmsg (sorry for spam). Channel name is %q", c.Name),
)
}
}
}