diff --git a/plugins/mctools.py b/plugins/mctools.py index 6dc3f6d..a149408 100755 --- a/plugins/mctools.py +++ b/plugins/mctools.py @@ -1,7 +1,4 @@ -from util import hook -from util import http -from util.text import get_text_list -import string +from util import hook, http import socket import json import struct @@ -44,12 +41,12 @@ def mclogin(inp, bot=None): @hook.command(autohelp=False) def mcstatus(inp, say=None): - "mcstatus -- Checks the status various Mojang servers." + "mcstatus -- Checks the status of various Mojang (the creators of Minecraft) servers." try: request = http.get("http://status.mojang.com/check") except (http.URLError, http.HTTPError) as e: - return "Unable to get minecraft server status: %s" % e + return "Unable to get Minecraft server status: {}".format(e) # change the json from a list of dictionaies to a dictionary data = json.loads(request.replace("}", "").replace("{", "").replace("]", "}").replace("[", "{")) @@ -58,9 +55,9 @@ def mcstatus(inp, say=None): # use a loop so we don't have to update it if they add more servers for server, status in data.items(): if status == "green": - out.append("%s is \x033\x02online\x02\x03" % server) + out.append("{} is \x033\x02online\x02\x03".format(server)) else: - out.append("%s is \x034\x02offline\x02\x03" % server) + out.append("{} is \x034\x02offline\x02\x03".format(server)) return ", ".join(out) + "." @@ -69,12 +66,18 @@ def mcstatus(inp, say=None): @hook.command def mcpaid(inp): "mcpaid -- Checks if has a premium Minecraft account." - login = http.get("http://www.minecraft.net/haspaid.jsp", user=inp) - if "true" in login: - return 'The account "%s" is a premium Minecraft account!' % inp + user = inp.strip() + + try: + status = http.get("http://www.minecraft.net/haspaid.jsp", user=user) + except (http.URLError, http.HTTPError) as e: + return "Unable to get user registration status: {}".format(e) + + if "true" in status: + return 'The account "{}" is a premium Minecraft account!'.format(inp) else: - return 'The account "%s" is not a premium Minecraft account!' % inp + return 'The account "{}" is not a premium Minecraft account!'.format(inp) @hook.command diff --git a/plugins/news.py b/plugins/news.py new file mode 100644 index 0000000..b603b57 --- /dev/null +++ b/plugins/news.py @@ -0,0 +1,29 @@ +from util import hook, web + + +@hook.command("feed") +@hook.command +def rss(inp, say=None): + + # preset news feeds + strip = inp.lower().strip() + if strip == "bukkit": + feed = "http://dl.bukkit.org/downloads/craftbukkit/feeds/latest-rb.rss" + limit = 1 + elif strip == "xkcd": + feed = "http://xkcd.com/rss.xml" + limit = 2 + else: + feed = inp + limit = 3 + + query = "SELECT title, link FROM rss WHERE url=@feed LIMIT @limit" + result = web.query(query, {"feed": feed, "limit": limit or 3}) + for row in result.rows: + link = web.isgd(row["link"]) + say(u"{} - {}".format(row["title"], link)) + + +@hook.command +def rb(inp, say=None): + rss("bukkit", say) \ No newline at end of file diff --git a/plugins/rss.py b/plugins/rss.py new file mode 100644 index 0000000..b603b57 --- /dev/null +++ b/plugins/rss.py @@ -0,0 +1,29 @@ +from util import hook, web + + +@hook.command("feed") +@hook.command +def rss(inp, say=None): + + # preset news feeds + strip = inp.lower().strip() + if strip == "bukkit": + feed = "http://dl.bukkit.org/downloads/craftbukkit/feeds/latest-rb.rss" + limit = 1 + elif strip == "xkcd": + feed = "http://xkcd.com/rss.xml" + limit = 2 + else: + feed = inp + limit = 3 + + query = "SELECT title, link FROM rss WHERE url=@feed LIMIT @limit" + result = web.query(query, {"feed": feed, "limit": limit or 3}) + for row in result.rows: + link = web.isgd(row["link"]) + say(u"{} - {}".format(row["title"], link)) + + +@hook.command +def rb(inp, say=None): + rss("bukkit", say) \ No newline at end of file