()
| 65 | } |
| 66 | |
| 67 | func (b *Bdiscord) Connect() error { |
| 68 | var err error |
| 69 | token := b.GetString("Token") |
| 70 | b.Log.Info("Connecting") |
| 71 | if !strings.HasPrefix(b.GetString("Token"), "Bot ") { |
| 72 | token = "Bot " + b.GetString("Token") |
| 73 | } |
| 74 | // if we have a User token, remove the `Bot` prefix |
| 75 | if strings.HasPrefix(b.GetString("Token"), "User ") { |
| 76 | token = strings.Replace(b.GetString("Token"), "User ", "", -1) |
| 77 | } |
| 78 | |
| 79 | b.c, err = discordgo.New(token) |
| 80 | if err != nil { |
| 81 | return err |
| 82 | } |
| 83 | b.Log.Info("Connection succeeded") |
| 84 | b.c.AddHandler(b.messageCreate) |
| 85 | b.c.AddHandler(b.messageTyping) |
| 86 | b.c.AddHandler(b.messageUpdate) |
| 87 | b.c.AddHandler(b.messageDelete) |
| 88 | b.c.AddHandler(b.messageDeleteBulk) |
| 89 | b.c.AddHandler(b.memberAdd) |
| 90 | b.c.AddHandler(b.memberRemove) |
| 91 | b.c.AddHandler(b.memberUpdate) |
| 92 | if b.GetInt("debuglevel") == 1 { |
| 93 | b.c.AddHandler(b.messageEvent) |
| 94 | } |
| 95 | // Add privileged intent for guild member tracking. This is needed to track nicks |
| 96 | // for display names and @mention translation |
| 97 | b.c.Identify.Intents = discordgo.MakeIntent(discordgo.IntentsAllWithoutPrivileged | |
| 98 | discordgo.IntentsGuildMembers) |
| 99 | |
| 100 | err = b.c.Open() |
| 101 | if err != nil { |
| 102 | return err |
| 103 | } |
| 104 | guilds, err := b.c.UserGuilds(100, "", "") |
| 105 | if err != nil { |
| 106 | return err |
| 107 | } |
| 108 | userinfo, err := b.c.User("@me") |
| 109 | if err != nil { |
| 110 | return err |
| 111 | } |
| 112 | serverName := strings.Replace(b.GetString("Server"), "ID:", "", -1) |
| 113 | b.nick = userinfo.Username |
| 114 | b.userID = userinfo.ID |
| 115 | |
| 116 | // Try and find this account's guild, and populate channels |
| 117 | b.channelsMutex.Lock() |
| 118 | for _, guild := range guilds { |
| 119 | // Skip, if the server name does not match the visible name or the ID |
| 120 | if guild.Name != serverName && guild.ID != serverName { |
| 121 | continue |
| 122 | } |
| 123 | |
| 124 | // Complain about an ambiguous Server setting. Two Discord servers could have the same title! |
nothing calls this directly
no test coverage detected