@@ -2,6 +2,7 @@ package main
22
33import (
44 "flag"
5+ "fmt"
56 "os"
67 "os/signal"
78 "path/filepath"
@@ -92,10 +93,21 @@ func main() {
9293 //
9394 viper .SetDefault ("irc_puppet_prejoin_commands" , []string {"MODE ${NICK} +D" })
9495 ircPuppetPrejoinCommands := viper .GetStringSlice ("irc_puppet_prejoin_commands" ) // Commands for each connection to send before joining channels
96+ rawDiscordFormat := viper .GetStringMapString ("discord_format" )
97+ var discordFormat map [string ]string
98+ if df , err := setupDiscordFormat (rawDiscordFormat ); err == nil {
99+ discordFormat = df
100+ } else {
101+ log .WithError (err ).Fatal ("discord_format setting is invalid" )
102+ return
103+ }
95104 //
96105 viper .SetDefault ("avatar_url" , "https://ui-avatars.com/api/?name=${USERNAME}" )
97106 avatarURL := viper .GetString ("avatar_url" )
98107 //
108+ viper .SetDefault ("irc_format" , "<${USER}#${DISCRIMINATOR}> ${CONTENT}" )
109+ ircFormat := viper .GetString ("irc_format" )
110+ //
99111 viper .SetDefault ("irc_listener_name" , "~d" )
100112 ircUsername := viper .GetString ("irc_listener_name" ) // Name for IRC-side bot, for listening to messages.
101113 // Name to Connect to IRC puppet account with
@@ -140,7 +152,9 @@ func main() {
140152 AvatarURL : avatarURL ,
141153 Discriminator : discriminator ,
142154 DiscordBotToken : discordBotToken ,
155+ DiscordFormat : discordFormat ,
143156 GuildID : guildID ,
157+ IRCFormat : ircFormat ,
144158 IRCListenerName : ircUsername ,
145159 IRCServer : ircServer ,
146160 IRCServerPass : ircPassword ,
@@ -219,6 +233,14 @@ func main() {
219233 }
220234 dib .Config .DiscordIgnores = discordIgnores
221235
236+ rawDiscordFormat := viper .GetStringMapString ("discord_format" )
237+ if discordFormat , err := setupDiscordFormat (rawDiscordFormat ); err == nil {
238+ dib .Config .DiscordFormat = discordFormat
239+ } else {
240+ log .WithError (err ).Error ("discord_format setting is invalid, this setting has not been updated" )
241+ }
242+ dib .Config .IRCFormat = viper .GetString ("irc_format" )
243+
222244 chans := viper .GetStringMapString ("channel_mappings" )
223245 equalChans := reflect .DeepEqual (chans , channelMappings )
224246 if ! equalChans {
@@ -259,6 +281,34 @@ func setupHostmaskMatchers(hostmasks []string) []glob.Glob {
259281 return matchers
260282}
261283
284+ func setupDiscordFormat (discordFormat map [string ]string ) (map [string ]string , error ) {
285+ var err error
286+ // lowercase to match that YAML lowercases it
287+ discordFormatDefaults := map [string ]string {
288+ "pm" : "${SERVER},${NICK}!${IDENT}@${HOST} - ${NICK}@${DISCRIMINATOR}: ${CONTENT}" ,
289+ "join" : "_${NICK} joined (${IDENT}@${HOST})_" ,
290+ "part" : "_${NICK} left (${IDENT}@${HOST}) - ${CONTENT}_" ,
291+ "quit" : "_${NICK} quit (${IDENT}@${HOST}) - Quit: ${CONTENT}_" ,
292+ "kick" : "_${TARGET} was kicked by ${NICK} - ${CONTENT}_" ,
293+ "nick" : "_${NICK} changed nick to ${CONTENT}_" ,
294+ }
295+
296+ for ev , format := range discordFormatDefaults {
297+ if df , ok := discordFormat [ev ]; ! ok || df == "" {
298+ discordFormat [ev ] = format
299+ }
300+ }
301+
302+ for ev := range discordFormat {
303+ if _ , ok := discordFormatDefaults [ev ]; ! ok {
304+ err = fmt .Errorf ("Unknown format key %s" , ev )
305+ break
306+ }
307+ }
308+
309+ return discordFormat , err
310+ }
311+
262312func SetLogDebug (debug bool ) {
263313 logger := log .StandardLogger ()
264314 if debug {
0 commit comments