Find problem from ports
[1/5] from: ptretter:charter at: 30-Sep-2000 12:24
I was creating a script for IRC when I noticed that the find command doesn't seem to work right from reading the port and parsing the data but does when reading from the console with the same functions. I am reading in a typical message string into iput-buffer for example (Port is opening a port to irc): ircparser: func [/local a b c][ a: parse/all copy input-buffer "!" sendnick: pick a 1 b: pick a 2 print b sendmsg: find b ":" print sendmsg c: parse copy input-buffer senduser: pick c 2 sendcmd: pick c 3 sendchan: pick c 4 ] while [true][ wait port input-buffer: copy first port if find/part input-buffer ":" 1 [ input-buffer: remove head input-buffer ircparser ] _________________________________ Console Windows _______________ NOTICE AUTH :*** Looking up your hostname... NOTICE AUTH :*** Found your hostname, cached NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** No Ident response none ** Script Error: find expected series argument of type: series port bitset. ** Where: sendmsg: find b ":" print ________________________________________________________________ Anyone know what the problem is? Seems to work ok if I recreate the issue from the console.
[2/5] from: jsc:dataheaven at: 1-Oct-2000 1:32
IMHO you make too much assumptions on the IRC-protocoll in your parser. Here's the more complete irc-parsing-function of my IRC-Bot: parse-msg: func [str [string!] /local _sender _par_tk _nick_tk _usr_tk _svr_tk _tpar_tk _trl_tk _cmd_tk _white _nonwhite _parch _space _middle _params _message] [ _white: charset [#" " #"^-" #"^@" #0 #"^M" #"^/"] _nonwhite: complement _white _parch: complement charset " ^-^@^M^/:" _space: [some _white] _middle: [_parch any _nonwhite] _params: [_space [ copy _tpar_tk _middle (append _par_tk _tpar_tk) _params | [#":" copy _trl_tk to end ]]] _message: [opt [#":" [[copy _nick_tk to "!" skip copy _usr_tk to "@" skip copy _svr_tk to " " skip] |copy _nick_tk to " " skip]] copy _cmd_tk to " " _params] clear _par_tk:  set [_nick_tk _usr_tk _svr_tk _tpar_tk _trl_tk _cmd_tk] none parse/all str _message _sender: either _usr_tk [reduce ['nick _nick_tk 'user _usr_tk 'host _svr_tk]] [_nick_tk] make object! [ sender: _sender command: _cmd_tk parameters: copy _par_tk trailing-arg: _trl_tk ] ] It's not absolutely ready yet, but it works for all IRC-messages On Sat, 30 Sep 2000, you wrote:
[3/5] from: ptretter::charter::net at: 30-Sep-2000 22:52
Your absolutely right - I made my ircparser very simple for the bots messages it recieves in the input-buffer based on what I am trying to achieve. I do intend to make a full fledged ircparser soon for my script but more importantly as a full irc compliant client in accorance with RFC 1459. I will also include ident server also when I am done. I did find that it wasnt a problem with find it was that I had received a message that didnt contain the "!" in the parse. It presented the problem. I fixed it with an if function to check for "!" before ircparsing. I have been very selective on the which incoming messages I use this ircparser function as I have other functions for different messages. I appreciate your input. Very helpful. Paul Tretter
[4/5] from: jsc:dataheaven at: 1-Oct-2000 6:38
On Sun, 01 Oct 2000, you wrote:
> Your absolutely right - I made my ircparser very simple for the bots > messages it recieves in the input-buffer based on what I am trying to
<<quoted lines omitted: 7>>> have other functions for different messages. > I appreciate your input. Very helpful.
Why not join forces to create a IRC-Bot that simply blasts all eggdrop-trash away? REBOL/Core is small enough to run on Shell-Accounts - it also supports eough platforms - so it seems to be the perfect language for an IRC-Bot. I plan following features: - Maintenance-port that gives a REBOL-Prompt to extend/bugfix the bot at runtime (Password authenticated with encrypted passwords) - Several in-IRC commands (KICK,JOIN,SEEN,PART,PASS...) - Different categories of users with configurable rights - Inter-Bot-Communications (to work togehter when something happens) - multiple server-connections from one REBOL process - and more to come... I've some experience in writing IRC-Bots. I've written a Bot with C++ and another with Commn Lisp (fully runtime extensible through maintenance-port) This bots run for several years now. Regards, Jochen
[5/5] from: ptretter:charter at: 1-Oct-2000 7:26
Very cool. Im interested in the maintenance port idea. Not sure how to go about doing that. I also want a feature to crawl irc for information. That way the bot would just be "out there". Lets start a channel to exchange information somewhere. The bot can play a role in that. Paul Tretter
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted