MCPcopy
hub / github.com/42wim/matterbridge / Connect

Method Connect

bridge/discord/discord.go:67–237  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

65}
66
67func (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!

Callers

nothing calls this directly

Calls 7

getChannelIDMethod · 0.95
splitURLMethod · 0.95
NewFunction · 0.92
AddWebhookMethod · 0.80
RefreshGuildWebhooksMethod · 0.80
GetStringMethod · 0.65
GetIntMethod · 0.65

Tested by

no test coverage detected