[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

A hopefully simple question

Chuft Captain

4/9/2009 4:05:00 AM

Hello,

I downloaded an irc bot written in Ruby. I haven't programmed in many
years but couldn't resist the urge to tinker with the code so I peeked
inside.

Basically I am trying to add additional string recognition statements to
this bot, so it says things in response to things people say in the
channel.

For example the code contains this statement:

elsif msg.text == "lol"
reply(msg, " LOLOLOLOL")

This works fine. However I would like to have it respond if the
statement being evaluated has "lol" anywhere in it, not just if it is
exactly "lol". In other words, I want to search their string, which
appears to be in the variable msg.text, to see if it contains "lol". In
the past, I have found this to be a simple matter in other languages.

I have been unable to find out how to do this in Ruby. If I try this:

elsif msg.text.include? "lol"
reply(msg, " LOLOLOLOL")

the bot either does not run at all, or else quits immediately. Similar
instant failure occurs when I try

elsif msg.text.include?("lol")
reply(msg, " LOLOLOLOL")

or

elsif msg.text =~ "lol"
reply(msg, " LOLOLOLOL")


Is there a simple way to accomplish this task by replacing the ==
comparison operator with something else that searches a string variable
for a substring?

Thanks
--
Posted via http://www.ruby-....

5 Answers

Michael Malone

4/9/2009 4:13:00 AM

0

Chuft Captain wrote:
> Hello,
>
> I downloaded an irc bot written in Ruby. I haven't programmed in many
> years but couldn't resist the urge to tinker with the code so I peeked
> inside.
>
> Basically I am trying to add additional string recognition statements to
> this bot, so it says things in response to things people say in the
> channel.
>
> Is there a simple way to accomplish this task by replacing the ==
> comparison operator with something else that searches a string variable
> for a substring?
>
> Thanks
>
/Everybody stand back/
I know regular expressions

if msg.text =~ %r{lol}i
reply(msg, " LOLOLOLOL")

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
=======================================================================


Phlip

4/9/2009 4:38:00 AM

0

Michael Malone wrote:

> /Everybody stand back/
> I know regular expressions

Our hero!

> if msg.text =~ %r{lol}i
> reply(msg, " LOLOLOLOL")

bla> echololia is a serious aphasia

bot> LOLOLOLOL

bla> uh... k

John Sikora

4/9/2009 4:45:00 AM

0

Phlip wrote:
> Michael Malone wrote:
>
>> /Everybody stand back/
>> I know regular expressions
>
> Our hero!
>
>> if msg.text =~ %r{lol}i
>> reply(msg, " LOLOLOLOL")
>
> bla> echololia is a serious aphasia
>
> bot> LOLOLOLOL
>
> bla> uh... k


It seems that if msg.text was a String object, then the include? method
should work.
The first thing I would do would be to try...

puts msg.text.class

...to know exactly what I am dealing with.


John S.
--
Posted via http://www.ruby-....

Michael Malone

4/9/2009 4:45:00 AM

0

Phlip wrote:
> Michael Malone wrote:
>
>> /Everybody stand back/
>> I know regular expressions
>
> Our hero!
>
>> if msg.text =~ %r{lol}i
>> reply(msg, " LOLOLOLOL")
>
> bla> echololia is a serious aphasia
>
> bot> LOLOLOLOL
>
> bla> uh... k
>
%r{\Wlol\W}i

da di duh da...
*indiana jones theme music*

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
=======================================================================


Chuft Captain

4/9/2009 4:47:00 AM

0

Michael Malone wrote:
> Chuft Captain wrote:
>> Is there a simple way to accomplish this task by replacing the ==
>> comparison operator with something else that searches a string variable
>> for a substring?
>>
>> Thanks
>>
> /Everybody stand back/
> I know regular expressions
>
> if msg.text =~ %r{lol}i
> reply(msg, " LOLOLOLOL")
>


You are a god among men. You have my thanks!
--
Posted via http://www.ruby-....