I just did another major update to MVpybot. Listeners have been implemented. A listener is a function that gets called whenever the bot receives data, or it can be set to only be called when a certain type (privmsg, join, part, etc) is received. As usual, the source is at the SVN repo.
Now for the technical stuff. A listener is just a python file in the listeners folder, with functions defined in it. A function’s name should be botfunction_type, where type is the type of message to listen for (privmsg, join, part, etc) or it can be ‘any’ for all data received by the bot. Here is an example logger function:
#!/usr/bin/python
import time
enabled=1
logfile=open('log','a')
timestamp=time.strftime('[ Session starting at %y-%m-%d %H:%M:%S ]')
logfile.write(timestamp+'\n')
logfile.close()
def botfunction_any():
logfile=open('log','a')
timestamp=time.strftime('[%y-%m-%d %H:%M:%S] ')
logfile.write(timestamp+line+'\n')
logfile.close()
As you can see from the example, plugins can be quickly enabled or disabled by toggling the ‘enabled’ flag. Also, ‘line’ is passed to the plugin. Not that anything outside of function definitions will be run when the bot starts.
Listeners can use the ‘socket’ variable to send data to the server, as shown in this example:
#!/usr/bin/python
enabled=0
def botfunction_privmsg():
print "called"
out="PRIVMSG %s :Botfunction_privmsg called" %(channel)
print out
socket.send(out+'\n')
Note that in the example, it uses botfunction_privmsg. To make listeners easier to write, the main program will automatically figure out these variables from privmsgs and pass them to the function:
info #user info
msg #the message
channel #the channel the message was from (set to the sender for private messages)
sender #the sender of the message
senderstuff #info of the sender
isprivate #whether or not the message was a private message as opposed to a channel message.
This only applies to privmsgs. All other events only get ‘socket’ and ‘line’ passed and have to figure out everything from ‘line’
That’s all for now.
Tags: irc, mvpybot, python
Posted
January 18th, 2010 in Uncategorized |
1 Comment »
Well, i’ve finally gotten around to putting out some decent source for the bot. Here it is. There is also an addon system. To make an addon, simply make a python file in the botplugins/ folder and put your code in, like this:
#!/usr/bin/python
def test():
return("PRIVMSG %s :test" %(channel))
This would make a function called test. The variables channel, sender, nick, cmd, and run are passed to the function. The functions syscmd() and getlevel() are also passed to the plugin.
The default plugins that are included with the bot are ping, for pinging addresses, testplugin, for testing the bot, yacas, for doing math with yacas (delete it if you don’t have yacas installed) and getlevel, for demonstrating the ability to use the getlevel function in a plugin.
I have also set up a page for the bot, see the links bar below the logo.
Tags: irc, mvpybot, python
Posted
December 22nd, 2009 in Uncategorized |
No Comments »
*** Update ***: Main page for bot here
I am currently writing a small, fast, small-footprint IRC bot in Python. More details as I finish the bot. The functions created so far:
- Help (Displays Help)
- Echo (Echo back a message)
- Say (Send a message to a channel)
- Spam (Send a message to a channel a specified amount of times)
- Join (Join a channel)
- Part (Part a channel)
- Authorization (username+password)
- Deauthorization
- User lookup
- Raw (Use raw IRC commands)
- Uptime (Display uptime)
- Math (Do math functions with Yacas)
Planned functions:
- Encrypted passwords
- Data storage, either in a text file or a MySQL DB
- Channel mode control
This bot is not meant to be a complex bot, it is intended to be a fast, light bot that can be easily reprogrammed.
Tags: irc, linux, python
Posted
December 5th, 2009 in Uncategorized |
2 Comments »
A while ago I wrote about how to do a wifi iPhone tether with a SOCKS proxy. Now, I’ll be writing about a Bluetooth tether on 3.0/3.0.1 with a 3G/3GS. To make this work on 3.1, you will need to enable tethering separately, which can usually be done by installing the “Internet Tethering” package in Cydia. This does NOT rely on that uit.sh script floating around, and will work on any Linux system with bluetooth. I used my Fedora 10 laptop for this.
Read the rest of this entry »
Tags: iphone, linux, Linux iPhone tether, tether
Posted
August 27th, 2009 in linux |
3 Comments »
I’ve attempted to write a complete OpenWRT setup tutorial, since many out there lack certain parts. This will cover the basics and the more advanced things you can do with OpenWRT. Read more for the tutorial.
Read the rest of this entry »
Tags: gnu, linux, openwrt, tutorial
Posted
August 17th, 2009 in linux |
16 Comments »
Mattventura.net and all of its services are back up after a power outage last night.
Posted
July 30th, 2009 in Uncategorized |
1 Comment »
The WordPress theme Roundicity that I made (well, actually modified, read the style.css file) is sort of complete, just needs better IE support. If you want to help, just send me an email. (mattventura.at.mattventura.net)
Feedback is welcomed in the comments, along with any questions you might have.
This theme does not work well in IE6. If you have IE6 users visiting your site, you should probably tell them to upgrade.
roundicity-0.9-alpha.tar.gz
Posted
July 24th, 2009 in Uncategorized |
2 Comments »
If you want to install Debian on an external drive, you can follow these instructions. THis has the advantage of being portable and persistent, and works for hard drives and flash drives.
Read the rest of this entry »
Tags: debian, linux
Posted
April 4th, 2009 in Uncategorized |
No Comments »
Seeing how inconvenient the whole tethering process is, I decided to simplify it with these scripts. You will probably want to keep the SUID bit on these, or use sudo and set it up to not ask for a password for this command. Be sure to replace wlan0 with your wifi interface.
Read the rest of this entry »
Tags: Linux iPhone tether
Posted
October 2nd, 2008 in linux |
No Comments »
Since I want to be able to use my Linux laptop on the go without paying for a “tethering plan” or paying for a separate plan, I decided to try tethering my iPhone. Doing this with network-manager is simple.
Read the rest of this entry »
Tags: Linux iPhone tether
Posted
October 1st, 2008 in linux |
2 Comments »