Do you have to write this to a file? It would make more sense to me to store it in a hash with the screen name, i.e.
my %sorry;
if ($msg=~/so?r?ry/){
++$sorry{"$screenname"};
}
but of course, you may need the file for something else, in which case I'd just store it in a hash anyway and replace the number in the file when you got a 'sry' in a message. | [reply] [d/l] |
but i replace $filename with $screenname.emo, or whatever variable the for the screenname is, right?
Assuming you are certain $screenname doesn't contain anything except alpha-numeric characters (for instance, the character '/' could cause some havoc, though don't assume that's the only character to watch out for), then yes. You can replace $filename with something like "$screenname.emo"
DarknessX has a good point, though. If you don't need the count to be persistent across invocations of your bot (and you don't need the file for some other process), you would be better off just storing the count in a hash, as this would save a lot of (unnecessary) file I/O.
bbfu
Black flowers blossum
Fearless on my breath
| [reply] [d/l] [select] |
Actualy, the security issues here are easy to deal with. Use the normalized screenname, not the formatted screenname. A little bit of background: In AIM scrennnames, only alphnumerics are significant, and those are case-insignificant. You can change the case and spacing, and add extra chacaters, to scrennnames at any time (there's somthing under file/preferences to do it in WinAIM, IIRC, or under tools/protocol actions in GAIAM). Thus, when comparing or storing scrennames for long terms, you should use the normalized name, which is defined as $sn=lc $sn; s/[^a-z0-9]//g, more or less. Naturaly falling out of this is that normalized screen names are always valid filenames on any reasonable platform (which doesn't include plain old DOS, in which filenames are too short -- IIRC SNs now have a limit of 18 or so chars in normal form.)
Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).
| [reply] [d/l] |
Well, actually, i will be using it for other things. For example, in the near future, I hope to have the bot have different replies to certain phrases depending on how the person had talked to it before. For example:
<screenname was nice in the past:>
Screenname: $^%# you!!
TestAIMBot: What happened? You used to be nice to me before!
<Screenname was not nice to it in the past:>
Screenname: $^%# you!!
TestAIMBot: Well, that's normal of $RealName. Why don't you just warn me so I can block you?
But I am glad to say that the "sorry" thing was tested and works perfectly! mowgli, Nkuvu, bbfu (of course!), and DarknessX THANKS VERY MUCH!
Feel free to talk to my bot (TestAIMBot), or me (Sleepaholic88).
I know that my bot is very stupid right now, but sooner or later, it will be better!
| [reply] |