Skip to content
Snippets Groups Projects
Commit a1308bc6 authored by FurryHead's avatar FurryHead
Browse files

Merge branch 'master' of ssh://repo.or.cz/srv/git/guppy into scipybot

parents 89681553 c3a5f9c1
No related branches found
No related tags found
No related merge requests found
......@@ -325,7 +325,7 @@ class IRC(threading.Thread):
self.pluginManager.event("action", channel, self.config["nickname"], action)
def doQuit(self, message=None):
self.sendLine("QUIT " + (message or ""))
self.sendLine("QUIT :" + (message or ""))
self.pluginManager.event("quit", self.config["nickname"], (message or ""))
self.running = False
......
# ddg module
# --gry
import urllib
import socket
import json
@plugin
class ddg(object):
def __init__(self, server):
self.server = server
self.commands = ["ddg"]
self.server.handle("command", self.handle_command, self.commands)
def handle_command(self, channel, user, cmd, args):
if cmd == "ddg":
if len(args) < 1:
self.server.doMessage(channel, user+": DuckDuckGo.com Zero-Click infoboxes search. Syntax: ddg <query>.")
return
try:
request = "+".join(args)
sock = urllib.urlopen("http://api.duckduckgo.com/?q=%s&o=json"%request)
data = sock.read()
sock.close()
if json.loads(data)["AbstractText"] != "":
self.server.doMessage(channel, user+": "+"%s %s)"%(json.loads(data)["AbstractURL"].encode('utf-8'),json.loads(data)["AbstractText"].encode('utf-8')[0:200]))
elif json.loads(data)["Definition"] != "":
self.server.doMessage(channel, user+": "+"%s %s"%(json.loads(data)["DefinitionURL"].encode('utf-8'),json.loads(data)["Definition"].encode('utf-8')))
except Exception, e:
self.server.doMessage(channel, user+": "+str(e))
# dns module
# --gry
import urllib
import socket
@plugin
class dns(object):
def __init__(self, server):
self.server = server
self.commands = ["dns"]
self.server.handle("command", self.handle_command, self.commands)
def handle_command(self, channel, user, cmd, args):
if cmd == "dns":
if len(args) < 1:
self.server.doMessage(channel, user+": Return a fully qualified domain name for a list of space-separated IPs or hostnames.")
return
try:
for each in args:
self.server.doMessage(channel, user+": "+ each+" = "+socket.getfqdn(each))
except Exception, e:
self.server.doMessage(channel, user+": "+str(e))
# rpn module
# --gry
@plugin
class rpn(object):
def __init__(self, server):
self.server = server
self.commands = ["rpn"]
self.server.handle("command", self.handle_command, self.commands)
def handle_command(self, channel, user, cmd, args):
if cmd == "rpn":
if len(args) < 1:
self.server.doMessage(channel, user+": reverse-polish-notation calculator. syntax: rpn 2 4 1 + / gives 2/5.")
return
self.stack = []
for char in args:
try:
char = float(char)# if it succeeds, then char is a number
self.stack.append(char)
except Exception,e: #float(char) failed, it's nonsense or an operator
try:
a = float(self.stack.pop()) #last
b = float(self.stack.pop()) #pre-last
if(char == "+"):
self.stack.append(a + b)
elif(char == "-"):
self.stack.append(b - a)
elif(char == "^"):
self.stack.append(pow(b,a))
elif(char == "*"):
self.stack.append(a * b)
elif(char == "/"):
self.stack.append(b / a)
except Exception, e:
self.conn.reply(str(e))
return
try:
self.server.doMessage(channel, user+": "+str(self.stack[0]))
except Exception, e:
return
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment