nctalk: add message deletion support
Signed-off-by: Gary Kim <gary@garykim.dev>
This commit is contained in:
@@ -90,9 +90,26 @@ func (b *Btalk) JoinChannel(channel config.ChannelInfo) error {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle deleting messages
|
||||||
|
if msg.MessageType == ocs.MessageSystem && msg.Parent != nil && msg.Parent.MessageType == ocs.MessageDelete {
|
||||||
|
remoteMessage := config.Message{
|
||||||
|
Event: config.EventMsgDelete,
|
||||||
|
Text: formatRichObjectString(msg.Message, msg.MessageParameters),
|
||||||
|
Channel: newRoom.room.Token,
|
||||||
|
Username: DisplayName(msg, guestSuffix),
|
||||||
|
UserID: msg.ActorID,
|
||||||
|
ID: strconv.Itoa(msg.Parent.ID),
|
||||||
|
Account: b.Account,
|
||||||
|
}
|
||||||
|
b.Log.Debugf("<= Message being deleted is %#v", remoteMessage)
|
||||||
|
b.Remote <- remoteMessage
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// ignore messages that are one of the following
|
// ignore messages that are one of the following
|
||||||
// * not a message from a user
|
// * not a message from a user
|
||||||
// * from ourselves
|
// * from ourselves
|
||||||
|
// Other message types are handled before this point
|
||||||
if msg.MessageType != ocs.MessageComment || msg.ActorID == b.user.User {
|
if msg.MessageType != ocs.MessageComment || msg.ActorID == b.user.User {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -131,26 +148,40 @@ func (b *Btalk) Send(msg config.Message) (string, error) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Talk currently only supports sending normal messages
|
// Standard Message Send
|
||||||
if msg.Event != "" {
|
if msg.Event == "" {
|
||||||
return "", nil
|
// Handle sending files if they are included
|
||||||
|
err := b.handleSendingFile(&msg, r)
|
||||||
|
if err != nil {
|
||||||
|
b.Log.Errorf("Could not send files in message to room %v from %v: %v", msg.Channel, msg.Username, err)
|
||||||
|
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
sentMessage, err := r.room.SendMessage(msg.Username + msg.Text)
|
||||||
|
if err != nil {
|
||||||
|
b.Log.Errorf("Could not send message to room %v from %v: %v", msg.Channel, msg.Username, err)
|
||||||
|
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
return strconv.Itoa(sentMessage.ID), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle sending files if they are included
|
// Message Deletion
|
||||||
err := b.handleSendingFile(&msg, r)
|
if msg.Event == config.EventMsgDelete {
|
||||||
if err != nil {
|
messageID, err := strconv.Atoi(msg.ID)
|
||||||
b.Log.Errorf("Could not send files in message to room %v from %v: %v", msg.Channel, msg.Username, err)
|
if err != nil {
|
||||||
|
return "", err
|
||||||
return "", nil
|
}
|
||||||
|
data, err := r.room.DeleteMessage(messageID)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return strconv.Itoa(data.ID), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
sentMessage, err := r.room.SendMessage(msg.Username + msg.Text)
|
// Message is not a type that is currently supported
|
||||||
if err != nil {
|
return "", nil
|
||||||
b.Log.Errorf("Could not send message to room %v from %v: %v", msg.Channel, msg.Username, err)
|
|
||||||
|
|
||||||
return "", nil
|
|
||||||
}
|
|
||||||
return strconv.Itoa(sentMessage.ID), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Btalk) getRoom(token string) *Broom {
|
func (b *Btalk) getRoom(token string) *Broom {
|
||||||
|
|||||||
Reference in New Issue
Block a user