@ -58,7 +58,7 @@ func (b *Bridge) createIRC(name string) *irc.Connection {
i . AddCallback ( "JOIN" , b . handleJoinPart )
i . AddCallback ( "PART" , b . handleJoinPart )
}
//i.AddCallback("353", b.handleOther)
i . AddCallback ( "*" , b . handleOther )
return i
}
@ -76,11 +76,54 @@ func (b *Bridge) handleJoinPart(event *irc.Event) {
//b.SendType(b.Config.IRC.Nick, "irc-"+event.Nick+" "+strings.ToLower(event.Code)+"s "+event.Message(), b.getMMChannel(event.Arguments[0]), "join_leave")
}
func tableformatter ( nicks_s string , nicksPerRow int ) string {
nicks := strings . Split ( nicks_s , " " )
result := "|IRC users"
if nicksPerRow < 1 {
nicksPerRow = 4
}
for i := 0 ; i < 2 ; i ++ {
for j := 1 ; j <= nicksPerRow ; j ++ {
if i == 0 {
result += "|"
} else {
result += ":-|"
}
}
result += "\r\n|"
}
result += nicks [ 0 ] + "|"
for i := 1 ; i < len ( nicks ) ; i ++ {
if i % nicksPerRow == 0 {
result += "\r\n|" + nicks [ i ] + "|"
} else {
result += nicks [ i ] + "|"
}
}
return result
}
func plainformatter ( nicks string , nicksPerRow int ) string {
return nicks + " currently on IRC"
}
func ( b * Bridge ) formatnicks ( nicks string ) string {
switch ( b . Config . IRC . NickFormatter ) {
case "table" :
return tableformatter ( nicks , b . Config . IRC . NicksPerRow )
default :
return plainformatter ( nicks , b . Config . IRC . NicksPerRow )
}
}
func ( b * Bridge ) handleOther ( event * irc . Event ) {
switch event . Code {
case "353" :
log . Println ( "handleOther" , b . getMMChannel ( event . Arguments [ 0 ] ) )
b . Send ( b . Config . IRC . Nick , event . Message ( ) + " currently on IRC" , b . getMMChannel ( event . Arguments [ 0 ] ) )
b . Send ( b . Config . IRC . Nick , b . formatnicks ( event . Message ( ) ) , b . getMMChannel ( event . Arguments [ 0 ] ) )
break
default :
log . Printf ( "got unknown event: %+v\n" , event ) ;
}
}
@ -119,9 +162,11 @@ func (b *Bridge) handleMatter() {
case "!users" :
log . Println ( "received !users from" , message . UserName )
b . i . SendRaw ( "NAMES " + b . getIRCChannel ( message . Token ) )
return
case "!gif" :
message . Text = b . giphyRandom ( strings . Fields ( strings . Replace ( message . Text , "!gif " , "" , 1 ) ) )
b . Send ( b . Config . IRC . Nick , message . Text , b . getIRCChannel ( message . Token ) )
return
}
texts := strings . Split ( message . Text , "\n" )
for _ , text := range texts {