dead simple go module for reading and communicating with IRC server via io.Writer compatible interface.
- Go 100%
|
Yonle
4d52a9fe32
irc/commands: add context.Context forwarding
It could be useful sometime for people that wants timeout, or context.WithValue stuff. Signed-off-by: Yonle <yonle@lecturify.net> |
||
|---|---|---|
| commands | irc/commands: add context.Context forwarding | |
| ctcp | irc/ctcp: fix bug on no param out of index | |
| irctext | irc/irctext: formatter: maybe fix | |
| go.mod | init. | |
| irc.go | irc: bug fix in Kick() | |
| irc_test.go | irc(test): add 433Error test | |
| LICENSE | init. | |
| README.md | introducing irc/ctcp | |
| types.go | init. | |
irc Go Reference
dead simple go module for reading and communicating with IRC server via io.Writer compatible interface.
getting started
packagemainimport("bufio""codeberg.org/Yonle/irc""fmt""net")varbotnick="ircbot"funcmain(){conn,err:=net.Dial("tcp","irc.example.chat:6667")iferr!=nil{fmt.Println(err)return}irc.RegisterUser(conn,"ircbot","IRC Bot")irc.Nick(conn,botnick)b:=bufio.NewScanner(conn)forb.Scan(){line:=b.Text()fmt.Println(line)ifirc.Pong(conn,line){continue}ifirc.Welcome(line){irc.Join(conn,"#example","#chat")continue}ifirc.NicknameIsUsed(line){botnick="ircbot_"irc.Nick(conn,botnick)continue}user,cmd,flags,fullmsg:=irc.ParseLine(line)// echoifcmd=="PRIVMSG"{to:=flags[0]// if to is equals to bot's nick, it's a pm.ifto==botnick{// redirect target to senderto=user.Nick}fmt.Printf("%s <%s> %s",to,user.Nick,fullmsg)irc.Chat(conn,flags[0],fullmsg)}}}documentation
press this: Go Reference
also check these out:
irc/commands: dead simple command handler & registerer so you could implement new commands easily in your bot.irc/irctext: dead simple IRC text formatter (bold, colored, underlined, strikethrough IRC text).irc/ctcp: dead simple ctcp parser, and maker.