@@ -146,31 +146,36 @@ func getConversationDetails(
146
146
ctx * IrcContext ,
147
147
channelID string ,
148
148
timestamp string ,
149
- ) (slack.Message , error ) {
149
+ ) (slack.Message , error , string ) {
150
150
message , err := ctx .SlackClient .GetConversationHistory (& slack.GetConversationHistoryParameters {
151
151
ChannelID : channelID ,
152
152
Latest : timestamp ,
153
153
Limit : 1 ,
154
154
Inclusive : true ,
155
155
})
156
156
if err != nil {
157
- return slack.Message {}, err
157
+ return slack.Message {}, err , ""
158
158
}
159
159
if len (message .Messages ) > 0 {
160
+ parent := message .Messages [0 ]
160
161
// If the timestamps are not equal, we're looking for a threaded message
161
- if message . Messages [ 0 ] .Timestamp != timestamp {
162
- msgs , _ , _ , err := ctx .SlackClient .GetConversationReplies (& slack.GetConversationRepliesParameters { ChannelID : channelID , Timestamp : message . Messages [ 0 ] .Timestamp })
162
+ if parent .Timestamp != timestamp {
163
+ msgs , _ , _ , err := ctx .SlackClient .GetConversationReplies (& slack.GetConversationRepliesParameters { ChannelID : channelID , Timestamp : parent .Timestamp })
163
164
if err == nil {
164
165
for _ , msg := range msgs {
165
- if msg .Timestamp == timestamp { return msg , nil }
166
+ if msg .Timestamp == timestamp {
167
+ channame := resolveChannelName (ctx , channelID , parent .Timestamp )
168
+ return msg , nil , channame
169
+ }
166
170
}
167
171
}
168
172
// TODO: Always find the message, or return better fallback
169
- log .Warningf ("Did not find threaded message with timestamp %v from %v" , timestamp , message . Messages [ 0 ] );
173
+ log .Warningf ("Did not find threaded message with timestamp %v from %v" , timestamp , parent );
170
174
}
171
- return message .Messages [0 ], nil
175
+ channame := resolveChannelName (ctx , channelID , "" )
176
+ return parent , nil , channame
172
177
}
173
- return slack.Message {}, fmt .Errorf ("No such message found" )
178
+ return slack.Message {}, fmt .Errorf ("No such message found" ), ""
174
179
}
175
180
176
181
func replacePermalinkWithText (ctx * IrcContext , text string ) string {
@@ -180,7 +185,7 @@ func replacePermalinkWithText(ctx *IrcContext, text string) string {
180
185
}
181
186
channel := matches [1 ]
182
187
timestamp := matches [2 ] + "." + matches [3 ]
183
- message , err := getConversationDetails (ctx , channel , timestamp )
188
+ message , err , _ := getConversationDetails (ctx , channel , timestamp )
184
189
if err != nil {
185
190
log .Printf ("could not get message details from permalink %s %s %s %v" , matches [0 ], channel , timestamp , err )
186
191
return text
@@ -278,7 +283,7 @@ func eventHandler(ctx *IrcContext, rtm *slack.RTM) {
278
283
switch message .SubType {
279
284
case "message_changed" :
280
285
// https://api.slack.com/events/message/message_changed
281
- editedMessage , err := getConversationDetails (ctx , message .Channel , message .Timestamp )
286
+ editedMessage , err , _ := getConversationDetails (ctx , message .Channel , message .Timestamp )
282
287
if err != nil {
283
288
fmt .Printf ("could not get changed conversation details %s" , err )
284
289
continue
@@ -362,7 +367,6 @@ func eventHandler(ctx *IrcContext, rtm *slack.RTM) {
362
367
// and slack.MemberLeftChannelEvent.
363
368
case * slack.ReactionAddedEvent :
364
369
// https://api.slack.com/events/reaction_added
365
- channame := resolveChannelName (ctx , ev .Item .Channel , "" )
366
370
user := ctx .GetUserInfo (ev .User )
367
371
name := ""
368
372
if user == nil {
@@ -371,7 +375,8 @@ func eventHandler(ctx *IrcContext, rtm *slack.RTM) {
371
375
} else {
372
376
name = user .Name
373
377
}
374
- msg , err := getConversationDetails (ctx , ev .Item .Channel , ev .Item .Timestamp )
378
+ msg , err , channame := getConversationDetails (ctx , ev .Item .Channel , ev .Item .Timestamp )
379
+
375
380
if err != nil {
376
381
fmt .Printf ("could not get Conversation details %s" , err )
377
382
continue
0 commit comments