Skip to content

Commit a832cef

Browse files
committed
Improve /me support (fixes #8)
1 parent 32ecf72 commit a832cef

File tree

5 files changed

+30
-10
lines changed

5 files changed

+30
-10
lines changed

bridge/discord.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,19 @@ func (d *discordBot) onMessageCreate(s *discordgo.Session, m *discordgo.MessageC
9393
s.ChannelMessageSend(m.ChannelID, "Pong!")
9494
}
9595

96-
d.h.discordMessageEventsChan <- m.Message
96+
isAction := len(m.Content) > 2 &&
97+
m.Content[0] == '_' &&
98+
m.Content[len(m.Content)-1] == '_'
99+
content := m.Content
100+
if isAction {
101+
content = content[1 : len(m.Content)-1]
102+
}
103+
104+
d.h.discordMessageEventsChan <- &DiscordMessage{
105+
Message: m.Message,
106+
Content: content,
107+
IsAction: isAction,
108+
}
97109
}
98110

99111
func (d *discordBot) onMemberListChunk(s *discordgo.Session, m *discordgo.GuildMembersChunk) {

bridge/home.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type home struct {
1717
done chan bool
1818

1919
discordMessagesChan chan IRCMessage
20-
discordMessageEventsChan chan *discordgo.Message
20+
discordMessageEventsChan chan *DiscordMessage
2121
updateUserChan chan DiscordUser
2222
}
2323

@@ -31,7 +31,7 @@ func prepareHome(dib *Bridge, discord *discordBot, ircListener *ircListener, irc
3131
done: make(chan bool),
3232

3333
discordMessagesChan: make(chan IRCMessage),
34-
discordMessageEventsChan: make(chan *discordgo.Message),
34+
discordMessageEventsChan: make(chan *DiscordMessage),
3535
updateUserChan: make(chan DiscordUser),
3636
}
3737

bridge/irc_connection.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ func (i *ircConnection) OnWelcome(e *irc.Event) {
2626

2727
go func(i *ircConnection) {
2828
for m := range i.messages {
29-
i.innerCon.Privmsg(m.IRCChannel, m.Message)
29+
if m.IsAction {
30+
i.innerCon.Action(m.IRCChannel, m.Message)
31+
} else {
32+
i.innerCon.Privmsg(m.IRCChannel, m.Message)
33+
}
3034
}
3135
}(i)
3236
}

bridge/irc_manager.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import (
44
"fmt"
55
"time"
66

7-
"github.com/bwmarrin/discordgo"
8-
97
"github.com/qaisjp/go-discord-irc/ircnick"
108
irc "github.com/thoj/go-ircevent"
119
)
@@ -125,7 +123,7 @@ func (m *ircManager) generateNickname(_ string, nick string) string {
125123
// return fmt.Sprintf("[%s-%s]", username, discriminator), nil
126124
}
127125

128-
func (m *ircManager) SendMessage(channel string, msg *discordgo.Message) {
126+
func (m *ircManager) SendMessage(channel string, msg *DiscordMessage) {
129127
con, ok := m.ircConnections[msg.Author.ID]
130128

131129
// Person is appearing offline
@@ -137,6 +135,7 @@ func (m *ircManager) SendMessage(channel string, msg *discordgo.Message) {
137135
ircMessage := IRCMessage{
138136
IRCChannel: channel,
139137
Message: msg.Content,
138+
IsAction: msg.IsAction,
140139
}
141140

142141
select {

bridge/structs.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package bridge
22

3+
import (
4+
"github.com/bwmarrin/discordgo"
5+
)
6+
37
// DiscordMessage is a chat message sent to IRC (from Discord)
48
type DiscordMessage struct {
5-
channelID string
6-
userID string
7-
message string
9+
*discordgo.Message
10+
Content string
11+
IsAction bool
812
}
913

1014
// IRCMessage is a chat message sent to Discord (from IRCListener)
1115
type IRCMessage struct {
1216
IRCChannel string
1317
Username string
1418
Message string
19+
IsAction bool
1520
}
1621

1722
// DiscordUser is information that IRC needs to know about a user

0 commit comments

Comments
 (0)