QWR4AKCMW4GPGKQKXO4GLOS7GZQ2KAD4JSOST5NCSM3VM7FJXPFAC VEGP36QXXAP3MTIUTYEF4ABNT4VMACTIIHM6A63HT7K3LTAUVTVQC 3A6UGWAXUK6NQCPXLAQNXHCRZKUSGU6M545P7ECPN7EVOPMIMP7AC ZFTQHHBQPTGLWIJ6NO7LEA6HAVWWL2QWSX4MYVJSC4MQ6SHPC53AC YSZWBOSQU7MIUK3AJ4ZX54FZEAB42N5BFCT6YSK25ZJAP7UUXAWAC HNQ2JXL7CQBMQO5T56AFFEJM27FB5PHKCJXDXV6QDLMPOV6FBIBAC MHH6QV5QBHBYPWSQMV7IAU5CJQPYZQUEJT7PIR3BPWWJJ7S5MPUAC S4P2B3FPF57HPHTIAYGMPCVKB7573IB5ZBKNXVBTB6ICCPF55WNQC D5WIJLNIFO5S66YXYKAHSU2VZJ6SJ7BVAUHDJMGX4ABVRGJYHZYAC BAEXWYVLYD73FC4OQZWFT6P7SE6KKWRLDK5ACDRTKQS5EURKEFXAC 4SYFUW4ODJBXFYH357E7K7YIPVVHQ3ALIJBFUXAHPBPLWFYL3DDQC 25CHRM7W3AA4VRF2ZSKU5YWBA5XTIZXMXDKZ64U5BRVGZGNNKM6AC DB2BCHT5GXNQ3JXQXWMDFNXIO7OVEQMVY34SHTAWSJS47N67YTIQC ZQE5UGGBKZRNI6ASUNOWVP4URLC7IHAWBO4RRACWLNS6OX2KQZVQC 7MLJEICDGSP5GMTO7MRQY5SFBLEROD6LDGKBTGHSIHJVB42ZXVMAC 526F5RML2DYJ6Y5R3A6FD5QKQ57NYONRBJMOXGR4WVEF6I6IAEHAC JZV5KFSQRORLTAUBDY6AAHCCDIGAJVNNSW3ZUU3X622L53P5LS2AC 373VDPE4NHOIRAA72G25QBXT6ODW7QKR64OG7U6BM4ALZRUNFI2QC 5F37EUQCHOXFW7BK6YY5P7SAQB64ZCA3COUE4CN4YIY4ENQC2FCAC DJJIZVCNVIH2HTR6K7YBEZTFMTMMW55GP37G4RAZO6G3UUXU52PAC DUVDPDDKESNM6URN3ZSOOVVGBUW5MTGHXXSKXHSMO3EG4ZXOP3HQC D5MLZ2BYK5M7FMRIJAJZ5JCTDLBIKFYE5WL3EL2PRQR3H43DS74AC BXLMOKJKVWRCNSJSD6L4RFON2IHEWB7J42QRYWN7M45XP22752YAC DB44ZP7WEBTVG2VE22AT3WEOV7BAKSTKWSLAAQJ22PCS2ELDK5SAC CGPQSMRFAEGSEMLDQWPHLEOAF26HVF3IC6BEKRCOSV2H6QLIBEAQC TV2SUMQCCZW4YIMWTVNNNVPUV2H5HBHZM2EWPGCRQNEAU4RTIEJQC IHXHACKRVX4QETJV72TKTTWQIEFWUOGTNM2KKNKB6B4V5KEVC6EQC 7Z22HWWDWKUZCOQFEWOJN64BJ5M33AYQ2GEJMHP3UV2OXJIH3BCAC LBKFI2GRVO3NKT35RZ7R7WH4MQ6DVJEL6VC6NP3TRMACUQZIWXFAC GJG4W23FRRNBABPBTE57FMXQDVEN67TA5QVES6JBUS6RVEJSYTZAC LNGUDOUQK35O5IIUHSVJ5LW54JA7QNMNCJGQNYWPRDUSK6R4XCLQC BEWT3YUFWOAKQVEO4ZERUTFISI26ULUCNKICDZFYZ4OM3DRLCKWQC N26QYRDHYBF36ODEANJ2EJKCWGWADPU3JZ2WLFJDTLZXANW6URIQC CRPUEZXM4UZYCYLARN6X74TXJ65NWKK4NDLHRD3DXSBQHI6IQ3BAC EKXQRZVVO3A2NMJ2O4UBVROZA4DWL2WGPUDTV4JNKMEM424S5R5AC PPHB36IL7PBXYAGHV6QEFNCKUXEJSSR6264PACKRP7OT2SWNUV6AC SCSKOWMTCSTVJUZ4KPYFFCRDFGDPZWQUNQ5X5MQQ7USMBM57CGHAC ZEJI2R6JJ6NJVO4Y4DZFPPOCHKOUDEWFEKQCB7DIUNMUF7YW7KHAC 2PSWFTP36SWDPEOJFVGDQ4M7AZHHRSMC6P63EPXR2W5YWJH4YV6QC P5LKO4U3UCFBXOZEF7HD3UP6LG3HDFEQCCGMWFEPAR7DBY6WJL5QC F7UEAPOJLX43J32QD6JJ4YABOZLMQR2THHL6BGFTPSYZ35XQJSQAC MGLPPSPTZYTHV2IW522JPA7MXU56AGFATN7O64GT3VHUIQ6H6W2QC 54PMPT2WRJQAQ2Q7QKTMVEXUO3DJ6RIYZF5KLVF5C63D4BTY4V6AC G5QWNM5KIWQPIT4MGOC5SBUWEIIVZS67YPIH3U5TUASHASABE2CQC HIRCSAI6D4EEV57CQCFIOCHXT4FUSABC4J46ER2GQY7IED3P6ZRQC JY3V7EV6X6EJH2QANLNO3S3YXZMGEW53BCIPFNVXSKZFUBSXHCAAC I4SAB3ZORIAJOCA3KQIWVXBP4IDK3H7VUUJRTHPNGSPA7XCPJMCAC TFCCKVFDPARIKHK3RKVLWUPT6M4P3FXD6NMC42U47PKHG2BSEDGQC NI3B7J2EHGSD7E65SGBLMI4R2YNS2LHI42NM37XEWP32PKBNKXYAC 6FS6YXYMVKOKFGG5ILX2JHHE6MVUBNAY3NAEYRBAJKUEG4AWQPDAC VNA3XNGJTPVS4FHYKMTFHNB4URFJJJPX27JSDMCS3NXY5F2GPRCQC QEVWVQCQ5QUTO7UI32IQFEDIXVVGIQ2SLIBEZL6GKXEXMHA6MAZAC V4U4N77ULT5CQG2AISTFD3B4K73QTWWYXKZ27SXFCBXXYXLM7DBQC 6QHAIQWTBMRUWI4HBEVR2UFNMTN5RKUH4TQIOORRPJUMTLDQW2IQC 27BO62KOXINDBTHZQ5HQPIX22OPPU3HKZSZB7AOQZNJ5FSL572EQC HTHDQRSJV4WVGIM53GR7JGIRZACMIZDI5UMJ522QFI3ZCX5K56GQC nick := 'nick $ircnet.nick\n'print('$host: $nick')sock.write_string(nick) or {}user := 'user a b c :full name\n'sock.write_string(user) or {}
nick_cmd := 'nick $nick\n'print('$host: $nick_cmd')sock.write_string(nick_cmd) or {}user_cmd := 'user a b c :full name\n'sock.write_string(user_cmd) or {}
pub fn (self &IrcActor) comm(mut ircnet Network) {mut reader := io.new_buffered_reader(reader: io.make_reader(ircnet.sock))
pub fn (self &IrcActor) comm(mut ircnet Network, mut ghost Ghost) {mut reader := io.new_buffered_reader(reader: io.make_reader(ghost.sock))
println('irc comm fail $err')ircnet.hangup()ircnet.stop = true
println('irc comm fail $ircnet.hostname $ghost.nick $err')ghost.hangup()//ircnet.stop = true
println('$self.hostname $cmd')self.sock.write_string(cmd) or {}
mut ghost := self.ghosts.by_nick(nick) or {println('irc.join() ghost nick "$nick" not found in ${self.hostname}. (msg was: $cmd)')return}println('$self.hostname $ghost.nick $cmd')ghost.sock.write_string(cmd) or {}
pub fn (mut self Ghosts) by_nick(nick string) ?Ghost {for g in self.ghosts {if g.nick == nick {return g}}return error('not found')}pub fn (mut self Ghost) hangup() {self.sock.close() or {}}pub fn (mut self Ghosts) add(ghost Ghost) {self.ghosts << ghost}