From e38f191da0061a2734fee782049211f8c23a22a4 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 10 Mar 2015 00:22:42 -0400 Subject: [PATCH 01/87] notify convo mods if a word causes a kick --- plugins/badwords.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/badwords.py b/plugins/badwords.py index d9b122357..3e1020a20 100644 --- a/plugins/badwords.py +++ b/plugins/badwords.py @@ -128,6 +128,8 @@ def test_badwords(event, db, conn, message): "{}, congratulations you've won!".format( event.nick), event.chan) + if event.chan == "#conversations": + message("{} found a bad word. You can remove '{}' from the list".format(event.nick, word), "#conversationsmods") conn.send(out) else: pass From 0e953969aa94cee2806a3ef814fe41dbad502a6d Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 15 Mar 2015 23:42:07 -0400 Subject: [PATCH 02/87] keep my command list --- docs/user/commands.md | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/user/commands.md b/docs/user/commands.md index 774681113..2b0dfca84 100644 --- a/docs/user/commands.md +++ b/docs/user/commands.md @@ -1,6 +1,6 @@ -gonzo-test Command list +gonzobot Command list ------ -**8ball (8, eightball):** <question> - asks the all knowing magic electronic eight ball <question> +**8ball (eightball, 8):** <question> - asks the all knowing magic electronic eight ball <question> **about**: -- Gives information about CloudBot. Use .about license for licensing information @@ -12,7 +12,7 @@ gonzo-test Command list **antonym**: <word> -- Returns a list of antonyms for <word>. -**ask (cb, cleverbot):** <question> -- Asks Cleverbot <question> +**ask (gonzobot, cleverbot, cb):** <question> -- Asks Cleverbot <question> **ban**: [channel] <user> - bans <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) @@ -112,11 +112,11 @@ gonzo-test Command list **fact**: Gets a random fact about numbers or dates. -**feed (rss, news):** <feed> -- Gets the first three items from the RSS/ATOM feed <feed>. +**feed (news, rss):** <feed> -- Gets the first three items from the RSS/ATOM feed <feed>. **flip**: <text> -- Flips <text> over. -**flirt (jackmeoff, sexup):** <user> - flirts with <user> +**flirt (sexup, jackmeoff):** <user> - flirts with <user> **flushlog**: Command has no documentation. ( *Permission required:* botcontrol) @@ -170,7 +170,7 @@ gonzo-test Command list **imgur**: [search term] / [/r/subreddit] / [/user/username] / memes / random - returns a link to a random imgur image based -**imguralbum (album, multiimgur, imgalbum):** [search term] / [/r/subreddit] / [/user/username] / memes / random - returns a link to lots of random images +**imguralbum (multiimgur, imgalbum, album):** [search term] / [/r/subreddit] / [/user/username] / memes / random - returns a link to lots of random images **info**: <factoid> - shows the source of a factoid @@ -196,7 +196,7 @@ gonzo-test Command list **lart**: <user> - LARTs <user> -**lastfm (np, l):** [user] [dontsave] - displays the now playing (or last played) track of LastFM user [user] +**lastfm (l, np):** [user] [dontsave] - displays the now playing (or last played) track of LastFM user [user] **lastfmcompare (compare, lc):** [user] ([user] optional) - displays the now playing (or last played) track of LastFM user [user] @@ -208,7 +208,7 @@ gonzo-test Command list **listbad**: Returns a list of bad words specify a channel to see words for a particular channel ( *Permission required:* badwords) -**listfactoids**: - lists all available factoids ( *Permission required:* listfactoids) +**listfacts**: - lists all available factoids **listregex**: Command has no documentation. ( *Permission required:* botcontrol) @@ -232,7 +232,7 @@ gonzo-test Command list **mcstatus**: - gets the status of various Mojang (Minecraft) servers -**mcuser (mcpaid, haspaid):** <username> - gets information about the Minecraft user <account> +**mcuser (haspaid, mcpaid):** <username> - gets information about the Minecraft user <account> **mcwiki**: mcwiki <phrase> - gets the first paragraph of the Minecraft Wiki article on <phrase> @@ -272,7 +272,7 @@ gonzo-test Command list **nk**: outputs a random North Korea propoganda slogan -**note (notes, todo):** <add|list|get|del|clear> args - manipulates your list of notes +**note (todo, notes):** <add|list|get|del|clear> args - manipulates your list of notes **octopart (octo):** octopart <keyword> -- Search for any part on the Octopart database. @@ -328,7 +328,7 @@ gonzo-test Command list **regexstatus**: Command has no documentation. ( *Permission required:* botcontrol) -**remind (reminder, in):** <1 minute, 30 seconds>: <do task> -- reminds you to <do task> in <1 minute, 30 seconds> +**remind (in, reminder):** <1 minute, 30 seconds>: <do task> -- reminds you to <do task> in <1 minute, 30 seconds> **remove**: [channel] <user> - force removes <user> from [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_rem, op) @@ -398,9 +398,7 @@ gonzo-test Command list **topic**: [channel] <topic> - changes the topic to <topic> in [channel], or in the caller's channel ( *Permission required:* op_topic, op) -**topten (loved, pointstop):** .topten or .pointstop prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. - -**translate**: [source language [target language]] <sentence> - translates <sentence> from source language (default autodetect) +**topten (pointstop, loved):** .topten or .pointstop prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. **tv (tv_next):** tv <series> -- Get the next episode of <series>. @@ -444,13 +442,13 @@ gonzo-test Command list **whois**: <domain> -- Does a whois query on <domain>. -**wiki (w, wikipedia):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. +**wiki (wikipedia, w):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. **wisdom**: words of wisdom from various bathroom stalls. **wnba**: wnba <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**wolframalpha (convert, wa, ca, calc, math):** w<query> -- Computes <query> using Wolfram Alpha. +**wolframalpha (wa, ca, math, convert, calc):** w<query> -- Computes <query> using Wolfram Alpha. **word (wordoftheday):** returns the word of the day. To see past word of the day enter use the format yyyy-MM-dd. The specified date must be after 2009-08-10. @@ -472,5 +470,5 @@ gonzo-test Command list **youtime (ytime):** youtime <query> -- Gets the total run time of the first YouTube search result for <query>. -**youtube (yt, you, y):** youtube <query> -- Returns the first YouTube search result for <query>. +**youtube (you, yt, y):** youtube <query> -- Returns the first YouTube search result for <query>. From 4e613ccba004743c28343d387124d2bc4fad3f6f Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 27 Mar 2015 19:04:51 -0400 Subject: [PATCH 03/87] add this silly command --- plugins/jokes.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/jokes.py b/plugins/jokes.py index cd4a616cd..5d006a92d 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -83,3 +83,9 @@ def boobies(text, conn): if out == text.strip(): return "Sorry I couldn't turn anything in '{}' into boobs for you.".format(out) return out + +@hook.command("zombs", autohelp=False) +def zombs(conn): + """prints some fucked up shit.""" + out = "\u2299\u2299\u0505\u0F0D\u0020\u0E88\u0020\u25DE\u0C6A\u25DF\u0E88\u0020\u0F0D\u0648" + return out From 8f82494402eaf982064913419e41e8477b7dd4d7 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 28 Mar 2015 09:05:07 -0400 Subject: [PATCH 04/87] save local changes for snoonet --- plugins/factoids.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/factoids.py b/plugins/factoids.py index e012573ef..4a1679826 100644 --- a/plugins/factoids.py +++ b/plugins/factoids.py @@ -102,7 +102,6 @@ def remember(text, nick, db, notice, async): @hook.command("f", "forget", permissions=["delfactoid"]) def forget(text, db, async, notice): """ - forgets previously remembered """ - data = factoid_cache.get(text) if data: @@ -132,19 +131,20 @@ def info(text, notice): @asyncio.coroutine @hook.regex(factoid_re) -def factoid(match, async, event, message, action): +def factoid(match, chan, async, event, message, action): """ - shows what data is associated with """ # split up the input split = match.group(1).strip().split(" ") - factoid_id = split[0].lower() + factoid_id = split[0] if len(split) >= 1: arguments = " ".join(split[1:]) else: arguments = "" - if factoid_id in factoid_cache: + # added protection for conversations facts until plugin is rewritten. + if (factoid_id in factoid_cache and chan.lower() in ['bloodygonzo','scarletangel', 'alicia', '#conversations', '#conversationsmods']) or factoid_id == "commands": data = factoid_cache[factoid_id] # factoid pre-processors if data.startswith(""): @@ -174,7 +174,7 @@ def factoid(match, async, event, message, action): @asyncio.coroutine -@hook.command(autohelp=False, permissions=["listfactoids"]) +@hook.command("listfacts", autohelp=False) def listfactoids(notice): """- lists all available factoids""" reply_text = [] From 20cbdea7b1672a5d4ad0c50c70f166098dc4f074 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 2 Apr 2015 00:19:52 -0400 Subject: [PATCH 05/87] sanitize drinks and horoscope by request --- plugins/drinks.py | 3 +++ plugins/horoscope.py | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/drinks.py b/plugins/drinks.py index 931810f9f..82c5e50d0 100644 --- a/plugins/drinks.py +++ b/plugins/drinks.py @@ -16,6 +16,9 @@ def load_drinks(bot): @hook.command() def drink(text, chan, action): """, makes the user a random cocktail.""" + if chan in ["#islam", "#stopdrinking"]: + action ("boils some water and makes {} a delicious cup of tea.".format(text),chan) + return index = random.randint(0,len(drinks)-1) drink = drinks[index]['title'] url = web.try_shorten(drinks[index]['url']) diff --git a/plugins/horoscope.py b/plugins/horoscope.py index d90f86932..0a8802019 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -14,9 +14,10 @@ def init(db): @hook.command(autohelp=False) -def horoscope(text, db, bot, notice, nick): +def horoscope(text, db, bot, notice, nick, chan): """ - get your horoscope""" - + if chan in ["#islam", "#stopdrinking"]: + return "I didn't think people in here cared about horoscopes." headers = {'User-Agent': bot.user_agent} # check if the user asked us not to save his details From a77bef547d6b167be30957cc04113dab8f5f29c3 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 7 Apr 2015 19:21:08 -0400 Subject: [PATCH 06/87] don't use quotes in #foreveralone --- plugins/quote.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/quote.py b/plugins/quote.py index 4cb7d54c0..c4f1e8220 100644 --- a/plugins/quote.py +++ b/plugins/quote.py @@ -152,7 +152,7 @@ def get_quote_by_chan(db, chan, num=False): def quote(text, nick, chan, db, notice): """[#chan] [nick] [#n] OR add - gets the [#n]th quote by (defaulting to random) OR adds as a quote for in the caller's channel""" - if chan in ["##partymansion"]: + if chan in ["##partymansion", "#foreveralone"]: return add = re.match(r"add[^\w@]+(\S+?)>?\s+(.*)", text, re.I) retrieve = re.match(r"(\S+)(?:\s+#?(-?\d+))?$", text) From e86c14c4ac0bd63d685d7d1cec8d8dab296420ec Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 11 Apr 2015 06:17:56 -0400 Subject: [PATCH 07/87] add in some opt in channels --- plugins/penis.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 plugins/penis.py diff --git a/plugins/penis.py b/plugins/penis.py new file mode 100644 index 000000000..fdb2151eb --- /dev/null +++ b/plugins/penis.py @@ -0,0 +1,21 @@ +import random + +from cloudbot import hook + +balls = ['(_)_)', '8', 'B', '(___)__)', '(_)(_)', '(@)@)', '3'] +shaft = ['=', '==', '===', '====', '=====', '========', '/////////////////////////', '|||||||||||||', '\u2248\u2248\u2248'] +head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] +emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] +bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig'] + +@hook.command(autohelp=False) +def penis(text, message, action, chan): + """much dongs, very ween, add a user nick as an arguement for slightly different 'output'""" + if chan not in optin and '#' in chan: + return "this channel does not have access to this command." + if not text: + message("{}{}{}".format(random.choice(balls), random.choice(shaft), random.choice(head))) + else: + person = text.split(' ')[0] + message("{}{}{}{} all over {}'s {}".format(random.choice(balls), random.choice(shaft), random.choice(head),random.choice(emission), person, random.choice(bodypart))) From de98a1eda3e4f56126bc37840e4aedbce9d27985 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 13 May 2015 17:58:23 -0400 Subject: [PATCH 08/87] add opt_out and special customizations --- plugins/attacks.py | 24 +++++++++++++++++++----- plugins/drinks.py | 2 +- plugins/duckhunt.py | 2 +- plugins/google.py | 6 ++++-- plugins/herald.py | 4 ++++ plugins/hookup.py | 6 ++++++ plugins/huntblock.py | 6 ++++++ plugins/ignore.py | 4 ++-- plugins/jokes.py | 18 ++++++++++++++---- plugins/karma.py | 6 +++--- plugins/mylife.py | 7 ++++--- plugins/password.py | 2 +- plugins/penis.py | 2 +- plugins/recipe.py | 6 +++++- plugins/thefuckingweather.py | 4 ++++ plugins/utility.py | 17 +++++++++++++---- plugins/wyr.py | 5 ++++- 17 files changed, 92 insertions(+), 29 deletions(-) create mode 100644 plugins/huntblock.py diff --git a/plugins/attacks.py b/plugins/attacks.py index 5288bd6ce..234585f53 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -10,6 +10,7 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) +opt_out = ['#anxiety'] def is_valid(target): """ Checks if a string is a valid IRC nick. """ @@ -55,9 +56,12 @@ def load_attacks(bot): @asyncio.coroutine @hook.command -def lart(text, conn, nick, action): +def lart(text, conn, chan, nick, action): """ - LARTs """ target = text.strip() + # do not activate command for channels that opt out. + if chan in opt_out: + return if not is_valid(target): return "I can't attack that." @@ -74,9 +78,11 @@ def lart(text, conn, nick, action): @asyncio.coroutine @hook.command("flirt", "sexup", "jackmeoff") -def flirt(text, conn, nick, message): +def flirt(text, conn, nick, chan, message): """ - flirts with """ target = text.strip() + if chan in opt_out: + return if not is_valid(target): return "I can't attack that." @@ -90,9 +96,11 @@ def flirt(text, conn, nick, message): @asyncio.coroutine @hook.command -def kill(text, conn, nick, action): +def kill(text, conn, nick, chan, action): """ - kills """ target = text.strip() + if chan in opt_out: + return if not is_valid(target): return "I can't attack that." @@ -109,9 +117,11 @@ def kill(text, conn, nick, action): @asyncio.coroutine @hook.command -def slap(text, action, nick, conn, notice): +def slap(text, action, nick, chan, conn, notice): """ -- Makes the bot slap .""" target = text.strip() + if chan in opt_out: + return if not is_valid(target): return "I can't attack that." @@ -131,18 +141,22 @@ def slap(text, action, nick, conn, notice): @hook.command(autohelp=False) def nk(chan, message): """outputs a random North Korea propoganda slogan""" + if chan in opt_out: + return index = random.randint(0,len(north_korea)-1) slogan = north_korea[index] message(slogan, chan) @asyncio.coroutine @hook.command() -def insult(text, conn, nick, notice, message): +def insult(text, conn, nick, chan, notice, message): """ - insults :type text: str :type conn: cloudbot.client.Client :type nick: str """ + if chan in opt_out: + return target = text.strip() if " " in target: diff --git a/plugins/drinks.py b/plugins/drinks.py index 82c5e50d0..775b13b9f 100644 --- a/plugins/drinks.py +++ b/plugins/drinks.py @@ -16,7 +16,7 @@ def load_drinks(bot): @hook.command() def drink(text, chan, action): """, makes the user a random cocktail.""" - if chan in ["#islam", "#stopdrinking"]: + if chan in ["#islam", "#stopdrinking", "#anxiety"]: action ("boils some water and makes {} a delicious cup of tea.".format(text),chan) return index = random.randint(0,len(drinks)-1) diff --git a/plugins/duckhunt.py b/plugins/duckhunt.py index 496ceaad1..542137acc 100644 --- a/plugins/duckhunt.py +++ b/plugins/duckhunt.py @@ -25,7 +25,7 @@ PrimaryKeyConstraint('name', 'chan','network') ) -opt_out = ['#anxiety', '#physics', '#UkrainianConflict'] +opt_out = ['#anxiety', '#physics', '#UkrainianConflict', '#subredditdrama'] """ game_status structure diff --git a/plugins/google.py b/plugins/google.py index 6adeb70c3..ce8a1a99f 100644 --- a/plugins/google.py +++ b/plugins/google.py @@ -3,6 +3,7 @@ from cloudbot import hook from cloudbot.util import http, formatting +opt_out = ['#anxiety'] def api_get(kind, query): """Use the RESTful Google Search API""" @@ -12,9 +13,10 @@ def api_get(kind, query): @hook.command("googleimage", "gis", "image") -def googleimage(text): +def googleimage(text, chan): """ - returns the first google image result for """ - + if chan in opt_out: + return parsed = api_get('images', text) if not 200 <= parsed['responseStatus'] < 300: raise IOError('error searching for images: {}: {}'.format(parsed['responseStatus'], '')) diff --git a/plugins/herald.py b/plugins/herald.py index 104daa969..da7408052 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -52,6 +52,8 @@ def welcome(nick, action, message, chan, event, db, conn): # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet chan = event.irc_raw.split(':')[2].lower() + if chan in ['#modtalk', '#casualconversation', '#anxiety']: + return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { 'name': nick.lower(), 'chan': chan.lower()}).fetchone() if welcome: @@ -62,6 +64,8 @@ def welcome(nick, action, message, chan, event, db, conn): text = greet.lower().split(' ')[1] out = grab.grabrandom(text, chan, message) message(out, chan) + elif '\_o<' in greet.replace('\u200b', ''): + message("DECOY DUCK --> {}".format(greet), chan) else: message(welcome[0], chan) diff --git a/plugins/hookup.py b/plugins/hookup.py index 0d4b46619..9ec383fab 100644 --- a/plugins/hookup.py +++ b/plugins/hookup.py @@ -3,6 +3,8 @@ from cloudbot import hook +opt_out = ['#anxiety'] + rooms = ["courtyard", "guest house", "observatory", "theatre", "drawing room", "garage", "spa", "master bedroom", "studio", "pool", "arcade", "beach house", "surf shop", "kitchen", "ballroom", "conservatory", "billiard room", "library", "study", "hallway", "lounge", "dining room", "cellar"] weapons = ["a candlestick","an axe", "a pistol", "rope", "gloves", "a horseshoe", "a knife", "a baseball bat", "a chalice", "a dumbbell", "a wrench", "a trophy", "a pipe", "garden shears"] @@ -17,6 +19,8 @@ @hook.command(autohelp=False) def hookup(db, conn, chan): """matches two users from the channel in a sultry scene.""" + if chan in opt_out: + return times = time.time() - 86400 people = db.execute("select name from seen_user where chan = :chan and time > :time", {"chan": chan, "time": times}).fetchall() if not people: @@ -35,6 +39,8 @@ def hookup(db, conn, chan): @hook.command(autohelp=False) def bite(text, chan, action): """bites the specified nick somewhere random.""" + if chan in opt_out: + return if not text: return "please tell me who to bite." name = text.split(' ')[0] diff --git a/plugins/huntblock.py b/plugins/huntblock.py new file mode 100644 index 000000000..dbe5fc9f0 --- /dev/null +++ b/plugins/huntblock.py @@ -0,0 +1,6 @@ +from cloudbot import hook + +@hook.command("start", "starthun", autohelp=False) +def huntfoil(): + """dummmy command to make sure people use the full starthunt command so OPS can block it if they need to.""" + return "I think you are looking for .starthunt" diff --git a/plugins/ignore.py b/plugins/ignore.py index 8d6a53219..ed44c29bf 100644 --- a/plugins/ignore.py +++ b/plugins/ignore.py @@ -119,7 +119,7 @@ def unignore(text, db, chan, conn, notice): remove_ignore(db, conn.name, chan, target) -@hook.command(permissions=["ignore"]) +@hook.command(permissions=["botcontrol"]) def global_ignore(text, db, conn, notice): """ -- ignores all input from in ALL channels.""" target = text.lower() @@ -133,7 +133,7 @@ def global_ignore(text, db, conn, notice): add_ignore(db, conn.name, "*", target) -@hook.command(permissions=["ignore"]) +@hook.command(permissions=["botcontrol"]) def global_unignore(text, db, conn, notice): """ -- un-ignores all input from in ALL channels.""" target = text.lower() diff --git a/plugins/jokes.py b/plugins/jokes.py index 52fddafc0..b63e74855 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -5,6 +5,8 @@ from cloudbot import hook +opt_out = ['#anxiety'] + @hook.on_start() def load_jokes(bot): """ @@ -34,14 +36,18 @@ def load_jokes(bot): book_puns = [line.strip() for line in f.readlines() if not line.startswith("//")] @hook.command() -def yomomma(text, message, conn): +def yomomma(text, chan, message, conn): """input , tells a yo momma joke to """ + if chan in opt_out: + return target = text.strip() message('{}, {}'.format(target, random.choice(yo_momma).lower())) @hook.command(autohelp=False) -def doit(message, conn): +def doit(message, chan, conn): """prints a do it line, example: mathmaticians do with a pencil""" + if chan in opt_out: + return message(random.choice(do_it)) @@ -75,8 +81,10 @@ def bookpun(message, conn): message("{} by {}".format(title, author)) @hook.command("boobs", "boobies") -def boobies(text, conn): +def boobies(text, chan, conn): """prints boobies!""" + if chan in opt_out: + return boob = "\u2299" out = text.strip() out = out.replace('o', boob).replace('O', boob).replace('0', boob) @@ -85,8 +93,10 @@ def boobies(text, conn): return out @hook.command("zombs", autohelp=False) -def zombs(conn): +def zombs(conn, chan): """prints some fucked up shit.""" + if chan in opt_out: + return out = "\u2299\u2299\u0505\u0F0D\u0020\u0E88\u0020\u25DE\u0C6A\u25DF\u0E88\u0020\u0F0D\u0648" return out diff --git a/plugins/karma.py b/plugins/karma.py index 1e0952752..2127d105c 100644 --- a/plugins/karma.py +++ b/plugins/karma.py @@ -107,7 +107,7 @@ def points(text, chan, db, conn): thing = "" if text.endswith("-global"): thing = text[:-7].strip() - karma = db.execute("select score from karma where thing = :thing", {'thing': thing.lower()}).fetchall() + karma = db.execute("select score from karma where thing = :thing and chan like :chan", {'thing': thing.lower(), 'chan':'#%'}).fetchall() else: karma = db.execute("select score from karma where thing = :thing and chan = :chan", {'thing': text.lower(), 'chan': chan }).fetchall() if karma: @@ -134,7 +134,7 @@ def pointstop(text, chan, db, message, conn, notice): items = "" out = "" if text == "global": - items = db.execute("select thing, score from karma").fetchall() + items = db.execute("select thing, score from karma where chan like :chan and chan not in ('#srotd')", {'chan':'#%'}).fetchall() out = "The top {} favorite things in all channels are: " else: items = db.execute("select thing, score from karma where chan = :chan", {'chan':chan}).fetchall() @@ -164,7 +164,7 @@ def pointsbottom(text, chan, db, message, conn, notice): items = "" out = "" if text == "global": - items = db.execute("select thing, score from karma").fetchall() + items = db.execute("select thing, score from karma where chan like :chan and chan not in ('#srotd')", {'chan':'#%'}).fetchall() out = "The {} most hated things in all channels are: " else: items = db.execute("select thing, score from karma where chan = :chan", {'chan':chan}).fetchall() diff --git a/plugins/mylife.py b/plugins/mylife.py index 53c42f485..9c83beb97 100644 --- a/plugins/mylife.py +++ b/plugins/mylife.py @@ -9,7 +9,7 @@ fml_cache = [] mlia_cache = [] - +opt_out = ['#anxiety'] @asyncio.coroutine def refresh_fml_cache(loop): @@ -50,9 +50,10 @@ def initial_refresh(loop): @asyncio.coroutine @hook.command(autohelp=False) -def fml(reply, loop): +def fml(reply, chan, loop): """- gets a random quote from fmyfife.com""" - + if chan in opt_out: + return # grab the last item in the fml cache and remove it fml_id, text = fml_cache.pop() # reply with the fml we grabbed diff --git a/plugins/password.py b/plugins/password.py index 5f964f520..77a543f64 100644 --- a/plugins/password.py +++ b/plugins/password.py @@ -71,7 +71,7 @@ def word_password(text, notice): try: length = int(text) except ValueError: - length = 3 + length = 4 if length > 10: notice("Maximum length is 50 characters.") diff --git a/plugins/penis.py b/plugins/penis.py index fdb2151eb..3a0dbf6ac 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#android'] @hook.command(autohelp=False) def penis(text, message, action, chan): diff --git a/plugins/recipe.py b/plugins/recipe.py index 08ed1beda..c75f5bb59 100644 --- a/plugins/recipe.py +++ b/plugins/recipe.py @@ -11,6 +11,8 @@ search_url = base_url + "/searches" random_url = search_url + "/surprise" +opt_out = ['#anxiety'] + # set this to true to censor this plugin! censor = True phrases = [ @@ -55,8 +57,10 @@ def get_data(url): @hook.command(autohelp=False) -def recipe(text): +def recipe(text, chan): """[term] - gets a recipe for [term], or gets a random recipe if no term is specified""" + if chan in opt_out: + return if text: # get the recipe URL by searching try: diff --git a/plugins/thefuckingweather.py b/plugins/thefuckingweather.py index 0df615d5e..34d08ba42 100644 --- a/plugins/thefuckingweather.py +++ b/plugins/thefuckingweather.py @@ -20,6 +20,8 @@ import urllib.parse import urllib3 +opt_out = ['#anxiety'] + DEGREE_SYMBOL = "F" @@ -75,6 +77,8 @@ def get_weather(text): If you need a degree symbol, you can use thefuckingweather.DEGREE_SYMBOL. """ + if chan in opt_out: + return # Generate query string query = {"where": text} # if celsius: diff --git a/plugins/utility.py b/plugins/utility.py index 02fd3feb5..d8392c3ad 100644 --- a/plugins/utility.py +++ b/plugins/utility.py @@ -27,6 +27,7 @@ from cloudbot import hook from cloudbot.util import formatting, web, colors +opt_out = ['#anxiety'] COLORS = collections.OrderedDict([ ('red', '\x0304'), @@ -217,8 +218,10 @@ def leet(text): # Based on plugin by FurCode - @hook.command -def derpify(text): +def derpify(text, chan): """derpify - returns some amusing responses from your input.""" + if chan in opt_out: + return string = text.upper() pick_the = random.choice(["TEH", "DA"]) pick_e = random.choice(["E", "3", "A"]) @@ -245,8 +248,10 @@ def color_parse(text): # colors - based on code by Reece Selwood - @hook.command -def rainbow(text): +def rainbow(text, chan): """ -- Gives rainbow colors.""" + if chan in opt_out: + return text = str(text) text = strip(text) col = list(COLORS.items()) @@ -261,8 +266,10 @@ def rainbow(text): @hook.command -def wrainbow(text): +def wrainbow(text, chan): """ -- Gives each word in rainbow colors.""" + if chan in opt_out: + return text = str(text) col = list(COLORS.items()) text = strip(text).split(' ') @@ -274,8 +281,10 @@ def wrainbow(text): @hook.command -def usa(text): +def usa(text, chan): """ -- Makes more patriotic.""" + if chan in opt_out: + return text = strip(text) c = [COLORS['red'], '\x0300', COLORS['blue']] l = len(c) diff --git a/plugins/wyr.py b/plugins/wyr.py index bc568f8ff..8550ae0a7 100644 --- a/plugins/wyr.py +++ b/plugins/wyr.py @@ -21,6 +21,7 @@ API_URL = "http://www.rrrather.com/botapi" FILTERED_TAGS = () +opt_out = ['#anxiety'] def get_wyr(headers): """ Gets a entry from the RRRather API and cleans up the data """ @@ -41,8 +42,10 @@ def get_wyr(headers): @hook.command("wyr", "wouldyourather", autohelp=False) -def wyr(bot): +def wyr(bot, chan): """ -- What would you rather do? """ + if chan in opt_out: + return headers = {"User-Agent": bot.user_agent} # keep trying to get entries until we find one that is not filtered From 29fcfb240563d8d4b5a44989f4ae01fc6bac2fb1 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 20 May 2015 00:32:32 -0400 Subject: [PATCH 09/87] add logging channel, protect heralds from running chanserv commands. --- plugins/admin_bot.py | 2 +- plugins/herald.py | 4 ++-- plugins/ignore.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/admin_bot.py b/plugins/admin_bot.py index 4c6be1382..423edfc70 100644 --- a/plugins/admin_bot.py +++ b/plugins/admin_bot.py @@ -3,7 +3,7 @@ from cloudbot import hook -logchannel = "" +logchannel = "##gonzobot" @asyncio.coroutine @hook.command("groups", "listgroups", "permgroups", permissions=["permissions_users"], autohelp=False) diff --git a/plugins/herald.py b/plugins/herald.py index da7408052..529338805 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -52,7 +52,7 @@ def welcome(nick, action, message, chan, event, db, conn): # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet chan = event.irc_raw.split(':')[2].lower() - if chan in ['#modtalk', '#casualconversation', '#anxiety']: + if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games' ]: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { 'name': nick.lower(), 'chan': chan.lower()}).fetchone() @@ -67,7 +67,7 @@ def welcome(nick, action, message, chan, event, db, conn): elif '\_o<' in greet.replace('\u200b', ''): message("DECOY DUCK --> {}".format(greet), chan) else: - message(welcome[0], chan) + message(" {}".format(welcome[0]), chan) # Saying something whenever someone joins can get really spammy # else: diff --git a/plugins/ignore.py b/plugins/ignore.py index c82ef21b1..b3e453150 100644 --- a/plugins/ignore.py +++ b/plugins/ignore.py @@ -6,7 +6,7 @@ from cloudbot import hook from cloudbot.util import botvars -logchannel = "" +logchannel = "##gonzobot" table = Table( "ignored", From 532b15e6e7d0807922dad53ecaeda7c0cfe0cdb3 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 28 Jun 2015 08:21:41 -0400 Subject: [PATCH 10/87] local changes so gonzobot opers up --- plugins/core_misc.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/core_misc.py b/plugins/core_misc.py index 7b0fed96f..b528bd734 100644 --- a/plugins/core_misc.py +++ b/plugins/core_misc.py @@ -25,7 +25,7 @@ def check_mode(irc_paramlist, conn, message): #message(", ".join(irc_paramlist), "bloodygonzo") mode = irc_paramlist[2] require_reg = conn.config.get('require_registered_channels', False) - if not "r" in mode and conn.name == "snoonet" and require_reg: + if not "r" in mode: message("I do not stay in unregistered channels", irc_paramlist[1]) out = "PART {}".format(irc_paramlist[1]) conn.send(out) @@ -59,6 +59,13 @@ def onjoin(conn, bot): bot.config['censored_strings'].append(nickserv_password) yield from asyncio.sleep(1) + # Should we oper up? + oper_pw = conn.config.get('oper_pw', False) + oper_user = conn.config.get('oper_user', False) + if oper_pw and oper_user: + out = "oper {} {}".format(oper_user, oper_pw) + conn.send(out) + # Set bot modes mode = conn.config.get('mode') if mode: From 79e48ed58639fe395db96c8fc43edafad56a9830 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 5 Jul 2015 20:59:27 -0400 Subject: [PATCH 11/87] exempt #math from attacks --- plugins/attacks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 234585f53..377dc6763 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -10,7 +10,7 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) -opt_out = ['#anxiety'] +opt_out = ['#anxiety', '#math'] def is_valid(target): """ Checks if a string is a valid IRC nick. """ From ff032b0ed71e408362dc426f805af7eef175b573 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 11 Aug 2015 10:16:02 -0400 Subject: [PATCH 12/87] add opt out ability for channels --- plugins/karma.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/karma.py b/plugins/karma.py index 2127d105c..e2ead5a17 100644 --- a/plugins/karma.py +++ b/plugins/karma.py @@ -10,6 +10,8 @@ karmaplus_re = re.compile('^.*\+\+$') karmaminus_re = re.compile('^.*\-\-$') db_ready = [] +opt_out = ['#anxiety', '#foreveralonewomen'] + def db_init(db, conn_name): """Check to see if the DB has the herald table. Connection name is for caching the result per connection. @@ -25,7 +27,8 @@ def db_init(db, conn_name): @hook.command("pp", "addpoint") def addpoint(text, nick, chan, db, conn): """.addpoint or (.pp) adds a point to the """ - + if chan in opt_out: + return db_init(db, conn.name) karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name':nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: @@ -52,7 +55,8 @@ def re_addpt(match, nick, chan, db, conn, notice): @hook.command("mm", "rmpoint") def rmpoint(text, nick, chan, db, conn): """.rmpoint or (.mm) subtracts a point from the """ - + if chan in opt_out: + return db_init(db, conn.name) karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name':nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: @@ -102,6 +106,8 @@ def re_rmpt(match, nick, chan, db, conn, notice): def points(text, chan, db, conn): """.points will print the total points for in the channel.""" db_init(db, conn.name) + if chan in opt_out: + return score = 0 karma = "" thing = "" @@ -128,6 +134,8 @@ def points(text, chan, db, conn): @hook.command("topten", "pointstop", "loved", autohelp=False) def pointstop(text, chan, db, message, conn, notice): """.topten or .pointstop prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global.""" + if chan in opt_out: + return db_init(db, conn.name) scores = [] points = defaultdict(int) @@ -158,6 +166,8 @@ def pointstop(text, chan, db, message, conn, notice): @hook.command("bottomten", "pointsbottom", "hated", autohelp=False) def pointsbottom(text, chan, db, message, conn, notice): """.bottomten or .pointsbottom prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global.""" + if chan in opt_out: + return db_init(db, conn.name) scores = [] points = defaultdict(int) From 196f8fcbcaeba88e1371dc9afe10e78edaca39e4 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 17 Aug 2015 21:07:07 -0400 Subject: [PATCH 13/87] add approved channel --- plugins/link_announcer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 2af14cace..0f313286c 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -9,7 +9,7 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = [] +opt_in = ['##doctorwho'] @hook.regex(url_re) def print_url_title(match, chan): From f6b01d8de185ad9bb8be61d23d2bc60d3020253e Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 17 Aug 2015 23:31:38 -0400 Subject: [PATCH 14/87] add #reddit to link announcements --- plugins/link_announcer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 8b5387c5b..7af3eda72 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -9,7 +9,7 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho'] +opt_in = ['##doctorwho', '#reddit'] @hook.regex(url_re) def print_url_title(match, chan): From f244ae6c75ef4f16354c7fc6f3b18f58a71495e3 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 18 Aug 2015 22:31:04 -0400 Subject: [PATCH 15/87] local commits before merge --- plugins/admin_channel.py | 4 ++-- plugins/foods.py | 2 +- plugins/grab.py | 15 +++++++++++++-- plugins/herald.py | 14 ++++++++++---- plugins/huntblock.py | 6 +++--- plugins/link_announcer.py | 2 +- plugins/penis.py | 9 +++++---- plugins/poll.py | 6 +++++- plugins/tell.py | 2 ++ plugins/urban.py | 6 ++++-- 10 files changed, 46 insertions(+), 20 deletions(-) diff --git a/plugins/admin_channel.py b/plugins/admin_channel.py index 986f22940..7a9ce850c 100644 --- a/plugins/admin_channel.py +++ b/plugins/admin_channel.py @@ -44,7 +44,7 @@ def unban(text, conn, chan, notice): @hook.command(permissions=["op_quiet", "op"]) def quiet(text, conn, chan, notice): """[channel] - quiets in [channel], or in the caller's channel if no channel is specified""" - if conn.name == "snoonet": + if conn.name == "conversations_snoonet": out = "mode {} +b m:{}".format(chan, text) conn.send(out) return @@ -54,7 +54,7 @@ def quiet(text, conn, chan, notice): @hook.command(permissions=["op_quiet", "op"]) def unquiet(text, conn, chan, notice): """[channel] - unquiets in [channel], or in the caller's channel if no channel is specified""" - if conn.name == "snoonet": + if conn.name == "conversations_snoonet": out = "mode {} -b m:{}".format(chan, text) conn.send(out) return diff --git a/plugins/foods.py b/plugins/foods.py index 9e611208d..20d4f6417 100644 --- a/plugins/foods.py +++ b/plugins/foods.py @@ -261,4 +261,4 @@ def beer(text, action): generator = textgen.TextGenerator(beer_data["templates"], beer_data["parts"], variables={"user": user}) # act out the message - action(generator.generate_string()) \ No newline at end of file + action(generator.generate_string()) diff --git a/plugins/grab.py b/plugins/grab.py index 81925eac3..20c50c3ca 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -9,6 +9,8 @@ search_pages = defaultdict(list) +opt_out = ['#anxiety'] + table = Table( 'grab', botvars.metadata, @@ -56,6 +58,8 @@ def smart_truncate(content, length=355, suffix='...\n'): @hook.command("moregrab", autohelp=False) def moregrab(text, chan): """if a grab search has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified.""" + if chan in opt_out: + return if not search_pages[chan]: return "There are grabsearch pages to show." if text: @@ -93,8 +97,9 @@ def grab_add(nick, time, msg, chan, db, conn): @hook.command() def grab(text, nick, chan, db, conn): - """grab grabs the last message from the - specified nick and adds it to the quote database""" + """grab grabs the last message from the specified nick and adds it to the quote database""" + if chan.lower() in opt_out: + return if text.lower() == nick.lower(): return "Didn't your mother teach you not to grab yourself?" @@ -125,6 +130,8 @@ def format_grab(name, quote): @hook.command("lastgrab", "lgrab") def lastgrab(text, chan, message): """prints the last grabbed quote from .""" + if chan.lower() in opt_out: + return lgrab = "" try: lgrab = grab_cache[chan][text.lower()][-1] @@ -138,6 +145,8 @@ def lastgrab(text, chan, message): @hook.command("grabrandom", "grabr", autohelp=False) def grabrandom(text, chan, message): """grabs a random quote from the grab database""" + if chan.lower() in opt_out: + return grab = "" name = "" if text: @@ -160,6 +169,8 @@ def grabrandom(text, chan, message): @hook.command("grabsearch", "grabs", autohelp=False) def grabsearch(text, chan): """.grabsearch matches "text" against nicks or grab strings in the database""" + if chan in opt_out: + return out = "" result = [] search_pages[chan] = [] diff --git a/plugins/herald.py b/plugins/herald.py index 529338805..7325d7b00 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -1,3 +1,4 @@ +import re from cloudbot import hook from cloudbot.event import EventType @@ -51,24 +52,29 @@ def welcome(nick, action, message, chan, event, db, conn): # freenode uncomment then next line # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet + decoy = re.compile('[oO0öøóȯôőŏᴏ](<|>)') + bino_re = re.compile('b+i+n+o+', re.IGNORECASE) + offensive_re = re.compile('卐') chan = event.irc_raw.split(':')[2].lower() - if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games' ]: + if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation' ]: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { 'name': nick.lower(), 'chan': chan.lower()}).fetchone() if welcome: greet = welcome[0] + greet = re.sub(bino_re, 'flenny', greet) + greet = re.sub(offensive_re, ' freespeech oppression ', greet) if greet.lower().split(' ')[0] == ".grabrandom": text = "" if len(greet.split(' ')) >= 2: text = greet.lower().split(' ')[1] out = grab.grabrandom(text, chan, message) message(out, chan) - elif '\_o<' in greet.replace('\u200b', ''): + elif decoy.search(greet.replace('\u200b', '').replace(' ', '')): message("DECOY DUCK --> {}".format(greet), chan) else: - message(" {}".format(welcome[0]), chan) - + message("\u200b {}".format(greet), chan) + # Saying something whenever someone joins can get really spammy # else: # action("welcomes {} to {}".format(nick, chan), chan) diff --git a/plugins/huntblock.py b/plugins/huntblock.py index dbe5fc9f0..82c38c625 100644 --- a/plugins/huntblock.py +++ b/plugins/huntblock.py @@ -1,6 +1,6 @@ from cloudbot import hook -@hook.command("start", "starthun", autohelp=False) +@hook.command("duckkic", "starthun", "stophun", autohelp=False) def huntfoil(): - """dummmy command to make sure people use the full starthunt command so OPS can block it if they need to.""" - return "I think you are looking for .starthunt" + """dummmy command to make sure people use the full command so OPS can block it if they need to.""" + return "please use the full command." diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 796e34a69..1e3d351ac 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -9,7 +9,7 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho', '#reddit'] +opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news'] @hook.regex(url_re) def print_url_title(match, chan): diff --git a/plugins/penis.py b/plugins/penis.py index 3a0dbf6ac..09b81fbfa 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,13 +7,14 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#android'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#android', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#protectandserve', '#destinythegame'] -@hook.command(autohelp=False) -def penis(text, message, action, chan): +@hook.command("penis", "bepis", autohelp=False) +def penis(text, message, chan, notice, nick): """much dongs, very ween, add a user nick as an arguement for slightly different 'output'""" if chan not in optin and '#' in chan: - return "this channel does not have access to this command." + notice("this channel does not have access to this command.", nick) + return if not text: message("{}{}{}".format(random.choice(balls), random.choice(shaft), random.choice(head))) else: diff --git a/plugins/poll.py b/plugins/poll.py index f122ccf36..273d4ca99 100644 --- a/plugins/poll.py +++ b/plugins/poll.py @@ -4,6 +4,7 @@ from cloudbot.util.formatting import pluralize, get_text_list +opt_out = ['#anxiety'] polls = {} @@ -66,7 +67,8 @@ def format_results(self): @hook.command() def poll(text, conn, nick, chan, message, reply): global polls - + if chan in opt_out: + return # get poll ID uid = ":".join([conn.name, chan, nick]).lower() @@ -106,6 +108,8 @@ def poll(text, conn, nick, chan, message, reply): def vote(text, nick, conn, chan, notice): """.vote - Vote on a poll; responds on error and silently records on success.""" global polls + if chan in opt_out: + return if len(text.split(' ', 1)) == 2: _user, option = text.split(' ', 1) diff --git a/plugins/tell.py b/plugins/tell.py index f54b8c4cf..4ad0b2e34 100644 --- a/plugins/tell.py +++ b/plugins/tell.py @@ -148,6 +148,8 @@ def tell_cmd(text, nick, db, notice, conn): query = text.split(' ', 1) if query[0].lower() == "paradox": return "Paradox doesn't want to hear from me. Just send him a fucking message." + if query[0].lower() == "rdv": + return "rdv doesn't want to hear from me, if you need something done please ask in #help." if len(query) != 2: prefix = conn.config("command_prefix") notice(prefix[0] + tell_cmd.__doc__) diff --git a/plugins/urban.py b/plugins/urban.py index 01b463433..fbefdbe12 100644 --- a/plugins/urban.py +++ b/plugins/urban.py @@ -5,6 +5,7 @@ from cloudbot import hook from cloudbot.util import formatting +opt_out = ['#anxiety'] base_url = 'http://api.urbandictionary.com/v0' define_url = base_url + "/define" @@ -12,9 +13,10 @@ @hook.command("urban", "u", autohelp=False) -def urban(text): +def urban(text, chan): """urban [id] -- Looks up on urbandictionary.com.""" - + if chan in opt_out: + return headers = { "Referer": "http://m.urbandictionary.com" } From 5e33b26f9adb57a9db6b85beaf261c5366d5d067 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 27 Aug 2015 23:06:07 -0400 Subject: [PATCH 16/87] save changes --- plugins/herald.py | 4 ++-- plugins/link_announcer.py | 2 +- plugins/profiling.py | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/herald.py b/plugins/herald.py index 7325d7b00..6fff1899c 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -52,7 +52,7 @@ def welcome(nick, action, message, chan, event, db, conn): # freenode uncomment then next line # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet - decoy = re.compile('[oO0öøóȯôőŏᴏ](<|>)') + decoy = re.compile('[oO0öøóóȯôőŏᴏō](<|>|<)') bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') chan = event.irc_raw.split(':')[2].lower() @@ -70,7 +70,7 @@ def welcome(nick, action, message, chan, event, db, conn): text = greet.lower().split(' ')[1] out = grab.grabrandom(text, chan, message) message(out, chan) - elif decoy.search(greet.replace('\u200b', '').replace(' ', '')): + elif decoy.search(greet.replace('\u200b', '').replace(' ', '').replace('\u202f','')): message("DECOY DUCK --> {}".format(greet), chan) else: message("\u200b {}".format(greet), chan) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 1e3d351ac..8f715343f 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -11,7 +11,7 @@ opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news'] -@hook.regex(url_re) +#@hook.regex(url_re) def print_url_title(match, chan): if chan not in opt_in: return diff --git a/plugins/profiling.py b/plugins/profiling.py index 370613ca2..9b7f85075 100644 --- a/plugins/profiling.py +++ b/plugins/profiling.py @@ -61,6 +61,7 @@ def get_thread_dump(): if line: code.append(" {}".format(line.strip())) code.append("") # new line + return "\n".join(code) return web.paste("\n".join(code), ext='txt') From fbf8612feb5cd9cc9a1c92d48947cd1d455ad411 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 30 Aug 2015 10:27:24 -0400 Subject: [PATCH 17/87] patch some security issues --- plugins/correction.py | 4 ++-- plugins/herald.py | 3 ++- plugins/utility.py | 8 ++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/correction.py b/plugins/correction.py index bf86906fc..ea2df3137 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -29,10 +29,10 @@ def correction(match, conn, nick, chan, message): if find.lower() in msg.lower(): if "\x01ACTION" in msg: msg = msg.replace("\x01ACTION", "").replace("\x01", "") - mod_msg = ireplace(msg, find, "\x02" + replace + "\x02").replace("\n","").replace("\r","") + mod_msg = ireplace(msg, find, "\x02" + replace + "\x02") message("Correction, * {} {}".format(name, mod_msg)) else: - mod_msg = ireplace(msg, find, "\x02" + replace + "\x02").replace("\n", "").replace("\r","") + mod_msg = ireplace(msg, find, "\x02" + replace + "\x02") message("Correction, <{}> {}".format(name, mod_msg)) msg = ireplace(msg, find, replace) diff --git a/plugins/herald.py b/plugins/herald.py index 6fff1899c..5a86a391a 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -53,6 +53,7 @@ def welcome(nick, action, message, chan, event, db, conn): # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet decoy = re.compile('[oO0öøóóȯôőŏᴏō](<|>|<)') + colors_re = re.compile("\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE) bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') chan = event.irc_raw.split(':')[2].lower() @@ -70,7 +71,7 @@ def welcome(nick, action, message, chan, event, db, conn): text = greet.lower().split(' ')[1] out = grab.grabrandom(text, chan, message) message(out, chan) - elif decoy.search(greet.replace('\u200b', '').replace(' ', '').replace('\u202f','')): + elif decoy.search(colors_re.sub("", greet.replace('\u200b', '').replace(' ', '').replace('\u202f','').replace('\x02', ''))): message("DECOY DUCK --> {}".format(greet), chan) else: message("\u200b {}".format(greet), chan) diff --git a/plugins/utility.py b/plugins/utility.py index aac0bc814..3b7d8a16e 100644 --- a/plugins/utility.py +++ b/plugins/utility.py @@ -139,10 +139,10 @@ def base64_encode(text): @hook.command("debase64", "unbase64") -def base64_decode(text, notice): +def base64_decode(text, notice, message): """ -- Decode with base64.""" try: - return base64.b64decode(text.encode()).decode() + message(base64.b64decode(text.encode()).decode()) except binascii.Error: notice("Invalid base64 string '{}'".format(text)) @@ -159,10 +159,10 @@ def base64_check(text): @hook.command -def unescape(text): +def unescape(text, message): """ -- Unicode unescapes .""" decoder = codecs.getdecoder("unicode_escape") - return decoder(text)[0] + message(decoder(text)[0]) @hook.command From e7c99af5b76a18705d4bdf4c447364de2e30d7ed Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 5 Sep 2015 10:06:52 -0400 Subject: [PATCH 18/87] fix bad merge --- plugins/link_announcer.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 2bc6abf77..87dc077be 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,10 +10,8 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news'] +opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff'] -@hook.regex(url_re) -opt_in = [] traditional = [ (1024 ** 5, 'PB'), From 6e76d6bb570f885325749b8528630cd426ac950b Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 5 Sep 2015 12:36:39 -0400 Subject: [PATCH 19/87] add some channels to link announcer --- plugins/link_announcer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 378f2d6f4..9e0a0a4a5 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff'] +opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff', '#casualconversation', '#conversationsmods', '#casualmods', '#nosleepooc', '#bingo', '#destinythegame', '#snoonet', '#steamdb', '#islam'] traditional = [ From 5d2a629f9aee87a18cc4a0ec6877efe9a4050822 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 7 Sep 2015 23:33:56 -0400 Subject: [PATCH 20/87] remove #memenetics from link announcements --- plugins/link_announcer.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 9e0a0a4a5..b6039d02d 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#memenetics', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff', '#casualconversation', '#conversationsmods', '#casualmods', '#nosleepooc', '#bingo', '#destinythegame', '#snoonet', '#steamdb', '#islam'] +opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff', '#casualconversation', '#conversationsmods', '#casualmods', '#nosleepooc', '#bingo', '#destinythegame', '#snoonet', '#steamdb', '#islam'] traditional = [ @@ -48,7 +48,10 @@ def print_url_title(match, chan): out = "Content Type: \x02{}\x02 Size: \x02{}\x02".format(content, size) return out html = BeautifulSoup(r.text) - title = html.title.text.strip() + try: + title = html.title.text.strip() + except: + return try: content = r.headers['content-type'].split(';')[0] except: From d353d47c654856f778366bf8ad130ae0ac3cf3e8 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 14 Oct 2015 07:41:34 -0400 Subject: [PATCH 21/87] fix whitespace and extra json brace --- data/brekkie.json | 2 +- plugins/foods.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/data/brekkie.json b/data/brekkie.json index 077d9240f..32f1637a7 100644 --- a/data/brekkie.json +++ b/data/brekkie.json @@ -70,4 +70,4 @@ ] } } -} \ No newline at end of file + diff --git a/plugins/foods.py b/plugins/foods.py index 5c337a152..d21818e35 100644 --- a/plugins/foods.py +++ b/plugins/foods.py @@ -66,7 +66,8 @@ def load_foods(bot): :type bot: cloudbot.bot.CloudBot """ global sandwich_data, taco_data, coffee_data, noodles_data, muffin_data, \ - tea_data, keto_data, beer_data, cheese_data, pancake_data, chicken_data, icecream_data, brekkie_data + tea_data, keto_data, beer_data, cheese_data, pancake_data, chicken_data, \ + icecream_data, brekkie_data with codecs.open(os.path.join(bot.data_dir, "sandwich.json"), encoding="utf-8") as f: sandwich_data = json.load(f) @@ -101,7 +102,7 @@ def load_foods(bot): with codecs.open(os.path.join(bot.data_dir, "chicken.json"), encoding="utf-8") as f: chicken_data = json.load(f) - with codecs.open(os.path.join(bot.data_dir, "brekkie.json"), encoding="utf-8") as f: + with codecs.open(os.path.join(bot.data_dir, "brekkie.json"), encoding="utf-8") as f: brekkie_data = json.load(f) with codecs.open(os.path.join(bot.data_dir, "icecream.json"), encoding="utf-8") as f: From 3c393942f8142a055218bbf40ba1c40c34661629 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 24 Nov 2015 21:55:01 -0500 Subject: [PATCH 22/87] fix typo and fuck with paradox --- plugins/duckhunt.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/duckhunt.py b/plugins/duckhunt.py index 5186b320d..2b91a13ea 100644 --- a/plugins/duckhunt.py +++ b/plugins/duckhunt.py @@ -122,7 +122,7 @@ def stop_hunt(chan, conn): @hook.command("duckkick") def no_duck_kick(text, chan, conn, notice): - """If the bot has OP or half-op in the channel you can specify .duckkick enable|disable so that people are kicked for shooting or befriending a non-existent goose. Default is off.""" + """If the bot has OP or half-op in the channel you can specify .duckkick enable|disable so that people are kicked for shooting or befriending a non-existent duck. Default is off.""" global game_status if chan in opt_out: return @@ -257,7 +257,9 @@ def bang(nick, chan, message, db, conn, notice): chance = hit_or_miss(deploy, shoot) if not random.random() <= chance and chance > .05: out = random.choice(miss) + " You can try again in 7 seconds." - scripters[nick.lower()] = shoot + 7 + scripters[nick.lower()] = shoot + 7 + if nick.lower() == "paradox": + scripters[nick.lower()] = shoot + 864000 return out if chance == .05: out += "You pulled the trigger in {} seconds, that's mighty fast. Are you sure you aren't a script? Take a 2 hour cool down.".format(str(shoot - deploy)) @@ -313,6 +315,8 @@ def befriend(nick, chan, message, db, conn, notice): if not random.random() <= chance and chance > .05: out = random.choice(miss) + " You can try again in 7 seconds." scripters[nick.lower()] = shoot + 7 + if nick.lower() == "paradox": + scripters[nick.lower()] = shoot + 864000 return out if chance == .05: out += "You tried friending that duck in {} seconds, that's mighty fast. Are you sure you aren't a script? Take a 2 hour cool down.".format(str(shoot - deploy)) From dcafba65ed3569d6a973bebf464747aef11d1df3 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 29 Nov 2015 20:35:59 -0500 Subject: [PATCH 23/87] add whitelisted channels --- plugins/link_announcer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 7e6826cfc..1dcdaa8c4 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -4,13 +4,14 @@ from contextlib import closing from cloudbot import hook + # This will match ANY we url including youtube, reddit, twitch, etc... Some additional work needs to go into # not sending the web request etc if the match also matches an existing web regex. blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|amzn.com|steamcommunity.com|steampowered.com|newegg.com).*', re.I) url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff', '#casualconversation', '#conversationsmods', '#casualmods', '#nosleepooc', '#bingo', '#destinythegame', '#snoonet', '#steamdb', '#islam'] +opt_in = ['##doctorwho', '#reddit', '#conversations', '#thelair', '#rcasualmods', '#nofear', '##neopets', '#foreveralonewomen', '#protectandserve', '#news', '#staff', '#casualconversation', '#conversationsmods', '#casualmods', '#nosleepooc', '#bingo', '#snoonet', '#steamdb', '#islam', 'bloodygonzo', '#youknowthatstuff', '#shenanigans', '#shenanigansmods', '#linuxmasterrace', '#private256', '#breakingparents', '#israel', '#breakingdad'] traditional = [ From c72cd77c0e6682d9934fef1c2ca18cf69f06306b Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 9 Mar 2016 15:26:49 -0500 Subject: [PATCH 24/87] syncing grab.py --- plugins/grab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/grab.py b/plugins/grab.py index ebfe1f7f4..2f20c5400 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -9,7 +9,7 @@ search_pages = defaultdict(list) -opt_out = ['#anxiety'] +opt_out = ['#anxiety', '#writingprompts'] table = Table( 'grab', From 1bd7ac27dfef3fc5fec7f61bb7e973ef93773bcb Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 17 Apr 2016 12:14:55 -0400 Subject: [PATCH 25/87] reset stuff --- plugins/grab.py | 2 +- plugins/lastfm.py | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/plugins/grab.py b/plugins/grab.py index dfd2dbebd..0187cddfd 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -9,7 +9,7 @@ search_pages = defaultdict(list) -opt_out = ['#anxiety', '#writingprompts'] +opt_out = ['#anxiety', '#writingprompts', '#drama'] table = Table( 'grab', diff --git a/plugins/lastfm.py b/plugins/lastfm.py index c56d5d1c7..7c61629c7 100644 --- a/plugins/lastfm.py +++ b/plugins/lastfm.py @@ -63,7 +63,8 @@ def lastfm(text, nick, db, bot, notice): params = {'method': 'user.getrecenttracks', 'api_key': api_key, 'user': user, 'limit': 1} - request = requests.get(api_url, params=params) + request = requests.get(api_url, params=params, timeout=3) + if request.status_code != requests.codes.ok: return "Failed to fetch info ({})".format(request.status_code) @@ -138,7 +139,7 @@ def getartisttags(artist, bot): api_key = bot.config.get("api_keys", {}).get("lastfm") params = { 'method': 'artist.getTopTags', 'api_key': api_key, 'artist': artist, 'autocorrect': '1'} - request = requests.get(api_url, params = params) + request = requests.get(api_url, params = params, timeout=3) tags = request.json() if 'tag' in tags['toptags']: @@ -160,7 +161,7 @@ def getsimilarartists(artist, bot): api_key = bot.config.get('api_keys', {}).get('lastfm') params = { 'method': 'artist.getsimilar', 'api_key': api_key, 'artist': artist, 'autocorrect': '1' } - request = requests.get(api_url, params = params) + request = requests.get(api_url, params = params, timeout=3) similar = request.json() # check it's a list @@ -176,7 +177,7 @@ def getusertrackplaycount(artist, track, user, bot): api_key = bot.config.get("api_keys", {}).get("lastfm") params = { 'method': 'track.getInfo', 'api_key': api_key, 'artist': artist, 'track': track, 'username': user } - request = requests.get(api_url, params = params) + request = requests.get(api_url, params = params, timeout=3) track_info = request.json() return track_info['track'].get('userplaycount') @@ -229,7 +230,7 @@ def getartistinfo(artist, bot, user = ''): 'autocorrect': '1'} if user: params['username'] = user - request = requests.get(api_url, params = params); + request = requests.get(api_url, params = params, timeout=3); artist = request.json() return artist @@ -263,7 +264,7 @@ def lastfmcompare(text, nick, bot,): 'type2': 'user', 'value2': user2 } - request = requests.get(api_url, params=params) + request = requests.get(api_url, params=params, timeout=3) if request.status_code != requests.codes.ok: return "Failed to fetch info ({})".format(request.status_code) @@ -313,7 +314,7 @@ def toptrack(text, nick, bot): 'user': username, 'limit': 5 } - request = requests.get(api_url, params=params) + request = requests.get(api_url, params=params, timeout=3) if request.status_code != requests.codes.ok: return "Failed to fetch info ({})".format(request.status_code) @@ -351,7 +352,7 @@ def topartists(text, nick, bot): 'user': username, 'limit': 5 } - request = requests.get(api_url, params=params) + request = requests.get(api_url, params=params, timeout=3) if request.status_code != requests.codes.ok: return "Failed to fetch info ({})".format(request.status_code) @@ -405,7 +406,7 @@ def topartists(text, nick, db, bot, notice, period): 'period': period, 'limit': 10 } - request = requests.get(api_url, params=params) + request = requests.get(api_url, params=params, timeout=3) if request.status_code != requests.codes.ok: return "Failed to fetch info ({})".format(request.status_code) From 4f93787726e8df3376cf57f931793ece812130d1 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 21 Apr 2016 12:33:18 -0400 Subject: [PATCH 26/87] herald exclusion list update --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 5a86a391a..7c5c2012b 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -57,7 +57,7 @@ def welcome(nick, action, message, chan, event, db, conn): bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') chan = event.irc_raw.split(':')[2].lower() - if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation' ]: + if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama']: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { 'name': nick.lower(), 'chan': chan.lower()}).fetchone() From a6708e09e7fdb4546b92c102d9a5eee28e926869 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 13 May 2016 01:28:36 -0400 Subject: [PATCH 27/87] chan opt outs --- plugins/google_cse.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/google_cse.py b/plugins/google_cse.py index ee8d0f998..39c3d4051 100644 --- a/plugins/google_cse.py +++ b/plugins/google_cse.py @@ -20,6 +20,7 @@ API_CS = 'https://www.googleapis.com/customsearch/v1' +opt_out = ["#sandersforpresident"] @hook.on_start() def load_api(bot): @@ -55,8 +56,10 @@ def gse(text): return u'{} -- \x02{}\x02: "{}"'.format(result['link'], title, content) @hook.command('gseis', 'gis', 'image') -def gse_gis(text): +def gse_gis(text, chan): """ -- Returns first Google Images result for .""" + if chan in opt_out: + return if not dev_key: return "This command requires a Google Developers Console API key." if not cx: @@ -68,7 +71,7 @@ def gse_gis(text): result = parsed['items'][0] metadata = parsed['items'][0]['image'] except KeyError: - return "No results found." + return "No results found or I am out of free searches for the day. Try .bis or .gif" dimens = '{}x{}px'.format(metadata['width'], metadata['height']) size = filesize.size(int(metadata['byteSize'])) From 550ee94d90f39635b66cdf70e83db7b9267744e6 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 15 May 2016 13:44:19 -0400 Subject: [PATCH 28/87] added opt outs for the link announcer --- plugins/link_announcer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 4fe3226a4..cb864fba2 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -7,10 +7,10 @@ # This will match ANY we url including youtube, reddit, twitch, etc... Some additional work needs to go into # not sending the web request etc if the match also matches an existing web regex. -blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|xkcd.com|amzn.co|steamcommunity.com|steampowered.com|newegg.com|vimeo.com).*', re.I) +blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|xkcd.com|amzn.co|steamcommunity.com|steampowered.com|newegg.com|vimeo.com|soundcloud.com|imdb.com).*', re.I) url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_out = [] +opt_out = ["#yogscast", "#mturk", "#europe"] traditional = [ (1024 ** 5, 'PB'), From 69cd463cecb252856bff60a759c770f5472703f6 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 18 May 2016 11:52:20 -0400 Subject: [PATCH 29/87] add in excluded channels --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 5c4f45701..275b3c543 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -59,7 +59,7 @@ def welcome(nick, action, message, chan, event, db, conn): bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') chan = event.irc_raw.split(':')[2].lower() - if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama']: + if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia']: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { 'name': nick.lower(), 'chan': chan.lower()}).fetchone() From 80085b4ab8295dbb14b2f703d65ff117a851958b Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 22 May 2016 13:33:34 -0400 Subject: [PATCH 30/87] opt out #anxiety --- plugins/mylife.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/mylife.py b/plugins/mylife.py index 9c83beb97..9f69b2cc9 100644 --- a/plugins/mylife.py +++ b/plugins/mylife.py @@ -6,7 +6,7 @@ import requests from cloudbot import hook - + fml_cache = [] mlia_cache = [] opt_out = ['#anxiety'] From 1a56e9496ee37193b32a721f6d9423d30bbcf125 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 24 Jun 2016 11:45:37 -0400 Subject: [PATCH 31/87] add changes to foods.py --- plugins/foods.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/foods.py b/plugins/foods.py index eea1f819d..0d1eda504 100644 --- a/plugins/foods.py +++ b/plugins/foods.py @@ -10,6 +10,8 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) +opt_out = ['#soberloners'] + cakes = ['Chocolate', 'Ice Cream', 'Angel', 'Boston Cream', 'Birthday', 'Bundt', 'Carrot', 'Coffee', 'Devils', 'Fruit', 'Gingerbread', 'Pound', 'Red Velvet', 'Stack', 'Welsh', 'Yokan'] @@ -287,8 +289,11 @@ def keto(text, action): @asyncio.coroutine @hook.command -def beer(text, action): +def beer(text, action, chan): """ - give beer to """ + if chan in opt_out: + return + user = text.strip() if not is_valid(user): @@ -386,8 +391,10 @@ def brekkie(text, action): @asyncio.coroutine @hook.command("doobie") -def doobie(text, action): +def doobie(text, action, chan): """ - pass the doobie to """ + if chan in opt_out: + return user = text.strip() if not is_valid(user): From 97ce0066a14e70489b96ff2410356b12e222db50 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 25 Jun 2016 12:47:52 -0400 Subject: [PATCH 32/87] fix issue with messages not sending --- cloudbot/__init__.py | 22 +++++++++++----------- cloudbot/clients/irc.py | 2 +- cloudbot/event.py | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cloudbot/__init__.py b/cloudbot/__init__.py index 896c69749..63714c872 100644 --- a/cloudbot/__init__.py +++ b/cloudbot/__init__.py @@ -50,20 +50,20 @@ def _setup(): "level": "INFO", "stream": "ext://sys.stdout" }, - "file": { - "class": "logging.handlers.RotatingFileHandler", - "maxBytes": 1000000, - "backupCount": 5, - "formatter": "full", - "level": "INFO", - "encoding": "utf-8", - "filename": os.path.join(logging_dir, "bot.log") - } +# "file": { +# "class": "logging.handlers.RotatingFileHandler", +# "maxBytes": 1000000, +# "backupCount": 5, +# "formatter": "full", +# "level": "INFO", +# "encoding": "utf-8", +# "filename": os.path.join(logging_dir, "bot.log") +# } }, "loggers": { "cloudbot": { "level": "DEBUG", - "handlers": ["console", "file"] + "handlers": ["console"] } } } @@ -75,7 +75,7 @@ def _setup(): "handlers": ["console", "file"] } - if logging_config.get("file_debug", True): + if logging_config.get("file_debug", False): dict_config["handlers"]["debug_file"] = { "class": "logging.handlers.RotatingFileHandler", "maxBytes": 1000000, diff --git a/cloudbot/clients/irc.py b/cloudbot/clients/irc.py index 9af87cdf4..04525af13 100644 --- a/cloudbot/clients/irc.py +++ b/cloudbot/clients/irc.py @@ -149,7 +149,7 @@ def close(self): def message(self, target, *messages): for text in messages: text = "".join(text.splitlines()) - self.cmd("PRIVMSG", target, " \u200b" + text) + self.cmd("PRIVMSG", target, text) def action(self, target, text): text = "".join(text.splitlines()) diff --git a/cloudbot/event.py b/cloudbot/event.py index 83c647a83..ca9c8934c 100644 --- a/cloudbot/event.py +++ b/cloudbot/event.py @@ -233,7 +233,7 @@ def message(self, message, target=None): if self.chan is None: raise ValueError("Target must be specified when chan is not assigned") target = self.chan - self.conn.message("\u200b" + target, message) + self.conn.message(target, message) def reply(self, *messages, target=None): """sends a message to the current channel/user with a prefix @@ -264,7 +264,7 @@ def action(self, message, target=None): raise ValueError("Target must be specified when chan is not assigned") target = self.chan - self.conn.action("\u200b" + target, message) + self.conn.action(target, message) def ctcp(self, message, ctcp_type, target=None): """sends an ctcp to the current channel/user or a specific channel/user From 62544f606e34f22aaf353bce60f11b526b529a15 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 10 Jul 2016 23:47:49 -0400 Subject: [PATCH 33/87] add #europa to the opt_out list --- plugins/link_announcer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index c865afd84..578b4d7b9 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|xkcd.com|amzn.co|steamcommunity.com|steampowered.com|newegg.com|vimeo.com|soundcloud.com|imdb.com).*', re.I) url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_out = ["#yogscast", "#mturk", "#europe"] +opt_out = ["#yogscast", "#mturk", "#europe", "#europa"] traditional = [ (1024 ** 5, 'PB'), From 2476ed684e8c9968545b55871825e2b7710f1a70 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 17 Jul 2016 01:29:01 -0400 Subject: [PATCH 34/87] turn off for some channels --- plugins/horoscope.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/horoscope.py b/plugins/horoscope.py index 0c2701305..7faad4ceb 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -14,7 +14,7 @@ def init(db): @hook.command(autohelp=False) -def horoscope(text, db, bot, notice, nick, chan): +def horoscope(text, db, bot, message, notice, nick, chan): """ - get your horoscope""" if chan in ["#islam", "#stopdrinking"]: return "I didn't think people in here cared about horoscopes." @@ -61,4 +61,4 @@ def horoscope(text, db, bot, notice, nick, chan): {'nick': nick.lower(), 'sign': sign}) db.commit() - return result + message(result) From caf2ddc7e50884a58cb7ef58c90c9baf4dd5d8b0 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 18 Jul 2016 16:07:48 -0400 Subject: [PATCH 35/87] don't allow seen in anxiety --- plugins/history.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/history.py b/plugins/history.py index df999bd04..fd4b9aec5 100644 --- a/plugins/history.py +++ b/plugins/history.py @@ -9,6 +9,7 @@ db_ready = [] +opt_out = ['#anxiety'] def db_init(db, conn_name): """check to see that our db has the the seen table (connection name is for caching the result per connection) @@ -91,7 +92,8 @@ def seen(text, nick, chan, db, event, conn): :type event: cloudbot.event.Event :type conn: cloudbot.client.Client """ - + if chan in opt_out: + return if event.conn.nick.lower() == text.lower(): return "You need to get your eyes checked." From e40f861f56e251dfa1db63c4c30702bb78efc339 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 26 Jul 2016 20:56:10 -0400 Subject: [PATCH 36/87] merge local changes --- plugins/duckhunt.py | 2 +- plugins/link_announcer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/duckhunt.py b/plugins/duckhunt.py index 2b91a13ea..7d44a1c1c 100644 --- a/plugins/duckhunt.py +++ b/plugins/duckhunt.py @@ -446,7 +446,7 @@ def duckforgive(text): else: return "I couldn't find anyone banned from the hunt by that nick" -#@hook.command("hunt_opt_out", permissions=["op", "ignore"], autohelp=False) +@hook.command("hunt_opt_out", permissions=["op", "ignore"], autohelp=False) def hunt_opt_out(text, chan, db, conn): """Running this command without any arguments displays the status of the current channel. hunt_opt_out add #channel will disable all duck hunt commands in the specified channel. hunt_opt_out remove #channel will re-enable the game for the specified channel.""" if not text: diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 3a6241850..e0d918d3d 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|xkcd.com|amzn.co|steamcommunity.com|steampowered.com|newegg.com|vimeo.com|soundcloud.com|imdb.com).*', re.I) url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_out = ["#yogscast", "#mturk", "#europe", "#europa"] +opt_out = ["#yogscast", "#mturk", "#europa"] traditional = [ (1024 ** 5, 'PB'), From d366cbfae905b7718a459db907138dd4e251c590 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 19 Aug 2016 15:18:04 -0400 Subject: [PATCH 37/87] don't log --- plugins/log.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/log.py b/plugins/log.py index ea1fa755c..4b88ab899 100644 --- a/plugins/log.py +++ b/plugins/log.py @@ -220,6 +220,10 @@ def log(event): """ :type event: cloudbot.event.Event """ + logging_config = event.bot.config.get("logging", {}) + if not logging_config.get("file_log", False): + return + text = format_event(event) if text is not None: From 8a6cb4597f18d062e80b4935bcb79ac463bb90bd Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 2 Oct 2016 02:10:17 -0400 Subject: [PATCH 38/87] add local changes --- plugins/attacks.py | 2 +- plugins/bing.py | 8 ++++---- plugins/core_misc.py | 2 +- plugins/correction.py | 10 ++++++---- plugins/dogpile.py | 2 +- plugins/drinks.py | 2 +- plugins/geoip.py | 1 + plugins/giphy.py | 4 ++++ plugins/grab.py | 2 +- plugins/herald.py | 2 +- plugins/jokes.py | 7 ++++++- plugins/link_announcer.py | 2 +- plugins/monsterhunt.py | 7 +------ plugins/mylife.py | 4 ++-- plugins/penis.py | 2 +- plugins/recipe.py | 2 +- plugins/sportscores.py | 18 +++++++++++++++++- plugins/wouldyourather.py | 2 +- plugins/wyr.py | 2 +- 19 files changed, 52 insertions(+), 29 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 6f48c8403..6b1738263 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -10,7 +10,7 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) -opt_out = ['#anxiety', '#math'] +opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama'] def is_valid(target): """ Checks if a string is a valid IRC nick. """ diff --git a/plugins/bing.py b/plugins/bing.py index ac0405dc7..627a07b68 100644 --- a/plugins/bing.py +++ b/plugins/bing.py @@ -16,7 +16,7 @@ # the default config just sets the filter to Moderate for all queries DEFAULT_FILTER = "Moderate" NSFW_FILTER = "Off" - +opt_out = ['#sandersforpresident', '#foreveralone'] def unescape(s): if not s.strip(): @@ -72,10 +72,11 @@ def bing(text, bot): @hook.command("bingimage", "bis") -def bingimage(text, bot): +def bingimage(text, bot, chan): """ - returns the first bing image search result for """ api_key = bot.config.get("api_keys", {}).get("bing_azure") - + if chan in opt_out: + return # handle NSFW show_nsfw = text.endswith(" nsfw") @@ -122,5 +123,4 @@ def bingimage(text, bot): # join all the tags together in a comma separated string ("tag1, tag2, tag3") tag_text = ", ".join(tags) - return '{} ({})'.format(unescape(result["MediaUrl"]), tag_text) diff --git a/plugins/core_misc.py b/plugins/core_misc.py index b528bd734..2dfab1203 100644 --- a/plugins/core_misc.py +++ b/plugins/core_misc.py @@ -25,7 +25,7 @@ def check_mode(irc_paramlist, conn, message): #message(", ".join(irc_paramlist), "bloodygonzo") mode = irc_paramlist[2] require_reg = conn.config.get('require_registered_channels', False) - if not "r" in mode: + if not "r" in mode and require_reg: message("I do not stay in unregistered channels", irc_paramlist[1]) out = "PART {}".format(irc_paramlist[1]) conn.send(out) diff --git a/plugins/correction.py b/plugins/correction.py index ea2df3137..941f9815e 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -6,7 +6,9 @@ correction_re = re.compile(r"^[sS]/(.*/.*(?:/[igx]{,4})?)\S*$") - +def shorten_msg(msg): + out = (msg[:500]) if len(msg) > 500 else msg + return out @hook.regex(correction_re) def correction(match, conn, nick, chan, message): """ @@ -29,13 +31,13 @@ def correction(match, conn, nick, chan, message): if find.lower() in msg.lower(): if "\x01ACTION" in msg: msg = msg.replace("\x01ACTION", "").replace("\x01", "") - mod_msg = ireplace(msg, find, "\x02" + replace + "\x02") + mod_msg = shorten_msg(ireplace(msg, find, "\x02" + replace + "\x02")) message("Correction, * {} {}".format(name, mod_msg)) else: - mod_msg = ireplace(msg, find, "\x02" + replace + "\x02") + mod_msg = shorten_msg(ireplace(msg, find, "\x02" + replace + "\x02")) message("Correction, <{}> {}".format(name, mod_msg)) - msg = ireplace(msg, find, replace) + msg = shorten_msg(ireplace(msg, find, replace)) if nick.lower() in name.lower(): conn.history[chan].append((name, timestamp, msg)) return diff --git a/plugins/dogpile.py b/plugins/dogpile.py index 39503d0b9..d8993dab8 100644 --- a/plugins/dogpile.py +++ b/plugins/dogpile.py @@ -9,7 +9,7 @@ HEADERS = {'User-Agent': 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19'} -opt_out = [] +opt_out = ["#foreveralone"] @hook.command("dpis", "gis") def dogpileimage(text, chan): diff --git a/plugins/drinks.py b/plugins/drinks.py index 775b13b9f..8b4783969 100644 --- a/plugins/drinks.py +++ b/plugins/drinks.py @@ -16,7 +16,7 @@ def load_drinks(bot): @hook.command() def drink(text, chan, action): """, makes the user a random cocktail.""" - if chan in ["#islam", "#stopdrinking", "#anxiety"]: + if chan in ["#islam", "#stopdrinking", "#anxiety","#soberloners"]: action ("boils some water and makes {} a delicious cup of tea.".format(text),chan) return index = random.randint(0,len(drinks)-1) diff --git a/plugins/geoip.py b/plugins/geoip.py index cffe7b8b4..7f7e1a168 100644 --- a/plugins/geoip.py +++ b/plugins/geoip.py @@ -67,6 +67,7 @@ def check_db(loop): @asyncio.coroutine @hook.on_start +@hook.command(permissions=['botcontrol']) def load_geoip(loop): asyncio.async(check_db(loop), loop=loop) diff --git a/plugins/giphy.py b/plugins/giphy.py index 21e5e4df8..e995ed8f5 100644 --- a/plugins/giphy.py +++ b/plugins/giphy.py @@ -5,6 +5,8 @@ api_url = 'http://api.giphy.com/v1/gifs' +opt_out = ["#sandersforpresident"] + @hook.on_start() def load_api(bot): """Loads the API key. Check here for the public api key: https://github.com/Giphy/GiphyAPI""" @@ -14,6 +16,8 @@ def load_api(bot): @hook.command("gif", "giphy") def giphy(text, chan): """Searches giphy.com for a gif using the provided search term.""" + if chan in opt_out: + return term = text.strip() search_url = api_url + '/search' params = { diff --git a/plugins/grab.py b/plugins/grab.py index 357dd517d..3cc35c703 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -9,7 +9,7 @@ search_pages = defaultdict(list) -opt_out = ['#anxiety', '#writingprompts', '#drama'] +opt_out = ['#anxiety', '#writingprompts', '#drama', '#foreveralone'] table = Table( 'grab', diff --git a/plugins/herald.py b/plugins/herald.py index 523ddbe7d..ec3acbbe6 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -75,7 +75,7 @@ def welcome(nick, action, message, chan, event, db, conn): chan = event.irc_raw.split(':')[2].lower() except: return - if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia']: + if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone']: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { diff --git a/plugins/jokes.py b/plugins/jokes.py index f965d5779..bbdbffa12 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -125,7 +125,7 @@ def triforce(message): @hook.command("kero", "kerowhack") def kero(text, message): """Returns the text input the way kerouac5 would say it.""" - saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird."] + saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird.", "JUGGALOS COME GET YOUR FREE QUINOA WITH RANCH"] keror = random.choice(saying).upper() if keror == "???? WTF IS": out = keror + " " + text.upper() @@ -137,3 +137,8 @@ def kero(text, message): def lawyerjoke(message, conn): """returns a lawyer joke, so lawyers know how much we hate them""" message(random.choice(lawyerjoke)) + +@hook.command("fuck", autohelp=False) +def fuck(text): + """returns something funny.""" + return("something funny.") diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index a131eb94b..7fd941406 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ blacklist = re.compile('.*(reddit\.com|redd.it|youtube.com|youtu.be|spotify.com|twitter.com|twitch.tv|amazon.co|xkcd.com|amzn.co|steamcommunity.com|steampowered.com|newegg.com|vimeo.com|soundcloud.com|imdb.com).*', re.I) url_re = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') -opt_out = ["#yogscast", "#mturk", "#europa"] +opt_out = ["#yogscast", "#mturk", "#europa", "#toolbox"] traditional = [ (1024 ** 5, 'PB'), diff --git a/plugins/monsterhunt.py b/plugins/monsterhunt.py index 88f555993..8ca5f7c37 100644 --- a/plugins/monsterhunt.py +++ b/plugins/monsterhunt.py @@ -1,7 +1,6 @@ import random import re import operator -import json from time import time from collections import defaultdict @@ -10,7 +9,6 @@ from cloudbot import hook from cloudbot.event import EventType from cloudbot.util import database -from cloudbot.util import web duck = [" ε=ε=ε=ε=ε=┌(; ・_・)┘ ", " ε=ε=ε=ε=ε=ε=┌(๑ʘ∀ʘ)┘ ", " ===≡≡≡。゚┌(゚´Д`゚)┘゚。 ", " ・・・・・・・ᕕ(╯°□°)ᕗ " ] duck_tail = ["[¬º-°]¬", "(▼皿▼)", "←~∋(。Ψ▼ー▼)∈", "∋━━o(`∀´oメ)~→", "(˼●̙̂ ̟ ̟̎ ̟ ̘●̂˻)", "(;´༎ຶД༎ຶ`)", "(((༼•̫͡•༽)))"] @@ -368,10 +366,8 @@ def friends(text, chan, conn, db): return "it appears no one has friended any monsters yet." topfriends = sorted(friends.items(), key=operator.itemgetter(1), reverse = True) - url = web.paste(json.dumps(topfriends, indent=4)) out += ' • '.join(["{}: {}".format('\x02' + k[:1] + u'\u200b' + k[1:] + '\x02', str(v)) for k, v in topfriends]) out = smart_truncate(out) - out += " " + url return out @hook.command("monsterkillers", autohelp=False) @@ -413,9 +409,8 @@ def killers(text, chan, conn, db): return "it appears no on has killed any monsters yet." topkillers = sorted(killers.items(), key=operator.itemgetter(1), reverse = True) - url = web.paste(json.dumps(topkillers, indent=4)) out += ' • '.join(["{}: {}".format('\x02' + k[:1] + u'\u200b' + k[1:] + '\x02', str(v)) for k, v in topkillers]) - out = smart_truncate(out) + " " + url + out = smart_truncate(out) return out #@hook.command("monsterforgive", permissions=["op", "ignore"]) diff --git a/plugins/mylife.py b/plugins/mylife.py index 98c7b2a91..5a4efd9cb 100644 --- a/plugins/mylife.py +++ b/plugins/mylife.py @@ -7,7 +7,7 @@ import requests from cloudbot import hook - + fml_cache = [] mlia_cache = [] opt_out = ['#anxiety'] @@ -57,7 +57,7 @@ def initial_refresh(loop): @asyncio.coroutine @hook.command(autohelp=False) -def fml(reply, loop): +def fml(reply, loop, chan): """- gets a random quote from fmylife.com""" if chan in opt_out: return diff --git a/plugins/penis.py b/plugins/penis.py index 09b81fbfa..88876be51 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#android', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#protectandserve', '#destinythegame'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#hotelreddit', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): diff --git a/plugins/recipe.py b/plugins/recipe.py index 22097ec5e..0c882168a 100644 --- a/plugins/recipe.py +++ b/plugins/recipe.py @@ -27,7 +27,7 @@ opt_out = ['#anxiety'] # set this to true to censor this plugin! -CENSOR = True +CENSOR = False PHRASES = [ "EAT SOME FUCKING \x02{}\x02", "YOU WON'T NOT MAKE SOME FUCKING \x02{}\x02", diff --git a/plugins/sportscores.py b/plugins/sportscores.py index 27a1cce23..3a372f65a 100644 --- a/plugins/sportscores.py +++ b/plugins/sportscores.py @@ -3,6 +3,8 @@ from cloudbot import hook from cloudbot.util import http +opt_out = ['#redditsquaredcircle'] + search_pages = defaultdict(list) def two_lines(bigstring, chan): @@ -23,7 +25,7 @@ def smart_truncate(content, length=400, suffix='...\n'): @hook.command("morescore", autohelp=False) -def moregrab(text, chan): +def morescore(text, chan): """if a score list has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified.""" if not search_pages[chan]: return "There are no score pages to show." @@ -47,6 +49,8 @@ def moregrab(text, chan): @hook.command("nfl", autohelp=False) def nflScores(chan, text=" "): """nfl gets the score or next schedule game for the specified team. If no team specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/nfl/bottomline/scores', decode=False) @@ -70,6 +74,8 @@ def nflScores(chan, text=" "): @hook.command("mlb", autohelp=False) def mlbScores(chan, text=" "): """mlb gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/mlb/bottomline/scores', decode=False) @@ -93,6 +99,8 @@ def mlbScores(chan, text=" "): @hook.command("nba", autohelp=False) def nbaScores(chan, text=" "): """nba gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/nba/bottomline/scores', decode=False) @@ -116,6 +124,8 @@ def nbaScores(chan, text=" "): @hook.command("ncaab", autohelp=False) def ncaabScores(chan, text=" "): """ncaab gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/ncb/bottomline/scores', decode=False) @@ -139,6 +149,8 @@ def ncaabScores(chan, text=" "): @hook.command("ncaaf", autohelp=False) def ncaafScores(chan, text=" "): """ncaaf gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/ncf/bottomline/scores', decode=False) @@ -162,6 +174,8 @@ def ncaafScores(chan, text=" "): @hook.command("nhl", autohelp=False) def nhlScores(chan, text=" "): """nhl gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/nhl/bottomline/scores', decode=False) @@ -184,6 +198,8 @@ def nhlScores(chan, text=" "): @hook.command("wnba", autohelp=False) def wnbaScores(chan, text=" "): """wnba gets the score or next scheduled game for the specified team. If no team is specified all games will be included.""" + if chan in opt_out: + return search_pages[chan] = [] search_pages[chan+"index"] = 0 response = http.get_html('http://scores.espn.go.com/wnba/bottomline/scores', decode=False) diff --git a/plugins/wouldyourather.py b/plugins/wouldyourather.py index b0352f974..35180e0af 100644 --- a/plugins/wouldyourather.py +++ b/plugins/wouldyourather.py @@ -2,7 +2,7 @@ from cloudbot.util import http, web -@hook.command("wouldyou", autohelp=False) +#@hook.command("wouldyou", autohelp=False) def wouldyourather_first(): """Asks a would you rather question""" diff --git a/plugins/wyr.py b/plugins/wyr.py index 6b3188589..6eada4ada 100644 --- a/plugins/wyr.py +++ b/plugins/wyr.py @@ -21,7 +21,7 @@ API_URL = "http://www.rrrather.com/botapi" FILTERED_TAGS = () -opt_out = ['#anxiety'] +opt_out = ['#anxiety', '#sandersforpresident'] def get_wyr(headers): """ Gets a entry from the RRRather API and cleans up the data """ From 6b4a1cdd4ee3ee7b6e0bc08bf4398d54a7d3f66e Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 13 Nov 2016 14:04:22 -0500 Subject: [PATCH 39/87] merge local commits --- plugins/admin_channel.py | 2 +- plugins/attacks.py | 2 +- plugins/chatbot.py | 2 +- plugins/penis.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/admin_channel.py b/plugins/admin_channel.py index 710b6464c..d0f69e0dd 100644 --- a/plugins/admin_channel.py +++ b/plugins/admin_channel.py @@ -1,7 +1,7 @@ from cloudbot import hook -logchannel = "" +logchannel = "##gonzobot" def mode_cmd(mode, text, text_inp, chan, conn, notice, nick, message): """ generic mode setting function """ diff --git a/plugins/attacks.py b/plugins/attacks.py index 8cea25a47..03e5fae8d 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -105,7 +105,7 @@ def flirt(text, conn, nick, chan, message): @asyncio.coroutine @hook.command("kill", "end") -def kill(text, conn, nick, action): +def kill(text, conn, nick, action, chan): """ - kills """ target = text.strip() if chan in opt_out: diff --git a/plugins/chatbot.py b/plugins/chatbot.py index d2dbede79..2b6a03a60 100644 --- a/plugins/chatbot.py +++ b/plugins/chatbot.py @@ -1,7 +1,7 @@ from cleverbot import Cleverbot from cloudbot import hook -# Clone cleverbot.py from https://github.com/folz/cleverbot.py +#Clone cleverbot.py from https://github.com/folz/cleverbot.py # Then run python3 setup.py install # At the time of this commit version 1.0.2 works but is not yet in pypi diff --git a/plugins/penis.py b/plugins/penis.py index 88876be51..18386ed57 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#hotelreddit', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 95fd40d6e3a5ab751ef7be7548569d5971fb73ed Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 13 Nov 2016 14:05:40 -0500 Subject: [PATCH 40/87] hookup causes infinite loops --- plugins/hookup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/hookup.py b/plugins/hookup.py index 9ec383fab..c5a61c603 100644 --- a/plugins/hookup.py +++ b/plugins/hookup.py @@ -2,7 +2,7 @@ import time from cloudbot import hook - + opt_out = ['#anxiety'] rooms = ["courtyard", "guest house", "observatory", "theatre", "drawing room", "garage", "spa", "master bedroom", "studio", "pool", "arcade", "beach house", "surf shop", "kitchen", "ballroom", "conservatory", "billiard room", "library", "study", "hallway", "lounge", "dining room", "cellar"] @@ -16,7 +16,7 @@ usrcache = [] #glob_chan = chan -@hook.command(autohelp=False) +#@hook.command(autohelp=False) def hookup(db, conn, chan): """matches two users from the channel in a sultry scene.""" if chan in opt_out: From 15c12828f78aa98f188402697c1e3f372ecf8092 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 16 Nov 2016 16:25:25 -0500 Subject: [PATCH 41/87] this is weird. --- data/clinton.json | 28 +++++++++++++------------- plugins/clinton.py | 50 +++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/data/clinton.json b/data/clinton.json index d41d794b4..158db0651 100644 --- a/data/clinton.json +++ b/data/clinton.json @@ -1,14 +1,14 @@ -{ - "templates": [ - "thinks {user} is {insult}", - "thinks that {user} helped Clinton deleted her emails", - "knows that {user} assisted Clinton with Benghazi", - "saw {user} help Clinton when she collapsed" - ], - "parts":{ - "insult": [ - "deplorable", - "a basement dweller" - ] - } -} +{ + "templates": [ + "thinks {user} is {insult}", + "thinks that {user} helped Clinton deleted her emails", + "knows that {user} assisted Clinton with Benghazi", + "saw {user} help Clinton when she collapsed" + ], + "parts":{ + "insult": [ + "deplorable", + "a basement dweller" + ] + } +} diff --git a/plugins/clinton.py b/plugins/clinton.py index cdb287069..da0713b0f 100644 --- a/plugins/clinton.py +++ b/plugins/clinton.py @@ -1,26 +1,26 @@ -import codecs -import json -import os -import random -import asyncio - -from cloudbot import hook -from cloudbot.util import textgen - -@hook.on_start() -def load_clintons(bot): - """ - :type bot: cloudbot.bot.CloudBot - """ - global clinton_data - - with codecs.open(os.path.join(bot.data_dir, "clinton.json"), encoding="utf-8") as f: - clinton_data = json.load(f) - -@asyncio.coroutine -@hook.command -def clinton(text, action): - """clinton a user.""" - user = text.strip() - generator = textgen.TextGenerator(clinton_data["templates"], clinton_data["parts"], variables={"user": user}) +import codecs +import json +import os +import random +import asyncio + +from cloudbot import hook +from cloudbot.util import textgen + +@hook.on_start() +def load_clintons(bot): + """ + :type bot: cloudbot.bot.CloudBot + """ + global clinton_data + + with codecs.open(os.path.join(bot.data_dir, "clinton.json"), encoding="utf-8") as f: + clinton_data = json.load(f) + +@asyncio.coroutine +@hook.command +def clinton(text, action): + """clinton a user.""" + user = text.strip() + generator = textgen.TextGenerator(clinton_data["templates"], clinton_data["parts"], variables={"user": user}) action(generator.generate_string()) \ No newline at end of file From 884491fb975c47847291846e549e18b3304a25bb Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 16 Nov 2016 23:52:06 -0500 Subject: [PATCH 42/87] remove command from #aspergers --- plugins/trump.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/trump.py b/plugins/trump.py index 8b466cfb0..365f0b4cc 100644 --- a/plugins/trump.py +++ b/plugins/trump.py @@ -7,6 +7,8 @@ from cloudbot import hook from cloudbot.util import textgen +opt_out = ['#aspergers'] + @hook.on_start() def load_trumps(bot): """ @@ -19,8 +21,10 @@ def load_trumps(bot): @asyncio.coroutine @hook.command -def trump(text, action): +def trump(text, action, chan): """trump a user.""" + if chan in opt_out: + return user = text.strip() generator = textgen.TextGenerator(trump_data["templates"], trump_data["parts"], variables={"user": user}) action(generator.generate_string()) From c5e2b98e125792930e5ec670e4bfa9e07e9337fb Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 7 Dec 2016 13:15:20 -0500 Subject: [PATCH 43/87] sync up local changes --- plugins/chatbot.py | 1 + plugins/grab.py | 2 +- plugins/herald.py | 2 +- plugins/penis.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/chatbot.py b/plugins/chatbot.py index 2b6a03a60..13837fc62 100644 --- a/plugins/chatbot.py +++ b/plugins/chatbot.py @@ -1,6 +1,7 @@ from cleverbot import Cleverbot from cloudbot import hook + #Clone cleverbot.py from https://github.com/folz/cleverbot.py # Then run python3 setup.py install # At the time of this commit version 1.0.2 works but is not yet in pypi diff --git a/plugins/grab.py b/plugins/grab.py index 3cc35c703..357dd517d 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -9,7 +9,7 @@ search_pages = defaultdict(list) -opt_out = ['#anxiety', '#writingprompts', '#drama', '#foreveralone'] +opt_out = ['#anxiety', '#writingprompts', '#drama'] table = Table( 'grab', diff --git a/plugins/herald.py b/plugins/herald.py index ec3acbbe6..93740392d 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -67,7 +67,7 @@ def welcome(nick, action, message, chan, event, db, conn): # freenode uncomment then next line # chan = event.irc_raw.split('JOIN ')[1].lower() # snoonet - decoy = re.compile('[oO0öøóóȯôőŏᴏō](<|>|<)') + decoy = re.compile('[o○O0öøóóȯôőŏᴏōο](<|>|<)') colors_re = re.compile("\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE) bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') diff --git a/plugins/penis.py b/plugins/penis.py index 18386ed57..0761d8160 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 8e87dbffa4997cc98206c1033c220e294ffd270e Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 7 Dec 2016 23:50:49 -0500 Subject: [PATCH 44/87] commit changes before pulling from master. --- plugins/herald.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/herald.py b/plugins/herald.py index 93740392d..04e260da8 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -7,7 +7,7 @@ import random db_ready = [] - +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone'] def db_init(db, conn_name): """Check to see if the DB has the herald table. Connection name is for caching the result per connection. @@ -44,7 +44,7 @@ def herald(text, nick, chan, db, conn): db.execute("insert or replace into herald(name, chan, quote) values(:name, :chan, :quote)", { 'name': nick.lower(), 'chan': chan, 'quote': text}) db.commit() - return("greeting successfully added") + return("greeting successfully added, NOTE: Heralds are currently disabled.") @hook.command(permissions=["botcontrol", "snoonetstaff"]) def deleteherald(text, chan, db, conn): @@ -60,7 +60,7 @@ def deleteherald(text, chan, db, conn): else: return "{} does not have a herald".format(text.lower()) -@hook.irc_raw("JOIN", singlethread=True) +#@hook.irc_raw("JOIN", singlethread=True) def welcome(nick, action, message, chan, event, db, conn): # For some reason chan isn't passed correctly. The below hack is sloppy and may need to be adjusted for different networks. # If someone knows how to get the channel a better way please fix this. @@ -75,7 +75,7 @@ def welcome(nick, action, message, chan, event, db, conn): chan = event.irc_raw.split(':')[2].lower() except: return - if chan in ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone']: + if chan in opt_out: return welcome = db.execute("select quote from herald where name = :name and chan = :chan", { From a47da034a9df4892f313e2bc9ed9498d3e6dc307 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 7 Dec 2016 23:54:20 -0500 Subject: [PATCH 45/87] take away the disabled herald message. --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 0a35c2d13..32ccbf516 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -46,7 +46,7 @@ def herald(text, nick, chan, db, conn): db.execute("insert or replace into herald(name, chan, quote) values(:name, :chan, :quote)", { 'name': nick.lower(), 'chan': chan, 'quote': text}) db.commit() - return("greeting successfully added, NOTE: Heralds are currently disabled.") + return("greeting successfully added.") @hook.command(permissions=["botcontrol", "snoonetstaff"]) def deleteherald(text, chan, db, conn): From 078342da403b4147b371f4c94da578499113fba4 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 7 Dec 2016 23:55:41 -0500 Subject: [PATCH 46/87] actually enable heralds this time. --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 32ccbf516..062ab139b 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -62,7 +62,7 @@ def deleteherald(text, chan, db, conn): else: return "{} does not have a herald".format(text.lower()) -#@hook.irc_raw("JOIN", singlethread=True) +@hook.irc_raw("JOIN", singlethread=True) def welcome(nick, action, message, chan, event, db, conn): # For some reason chan isn't passed correctly. The below hack is sloppy and may need to be adjusted for different networks. # If someone knows how to get the channel a better way please fix this. From 6b97e85fe0206d3cbfcdeb9d68f152b3e19e8702 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 20 Feb 2017 05:48:58 -0500 Subject: [PATCH 47/87] disable in lmr --- plugins/chatbot.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/chatbot.py b/plugins/chatbot.py index 13837fc62..85c136aed 100644 --- a/plugins/chatbot.py +++ b/plugins/chatbot.py @@ -6,10 +6,15 @@ # Then run python3 setup.py install # At the time of this commit version 1.0.2 works but is not yet in pypi +# Define channels that have opted out of this command. + +opt_out = ['#linuxmasterrace'] -cb = Cleverbot() +cb = Cleverbot('gonzobot') @hook.command("ask", "gonzo", "gonzobot", "cleverbot", "cb") -def chitchat(text): +def chitchat(text, chan): """chat with cleverbot.com""" + if chan in opt_out: + return return cb.ask(text) From 14ce35a77c58d35bbac97db7fa9ee6e728e57043 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 26 Mar 2017 19:03:54 -0400 Subject: [PATCH 48/87] add opt_out channels for karma. --- plugins/karma.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/karma.py b/plugins/karma.py index c647fbac8..30990ec2b 100644 --- a/plugins/karma.py +++ b/plugins/karma.py @@ -8,7 +8,7 @@ karmaplus_re = re.compile('^.*\+\+$') karmaminus_re = re.compile('^.*\-\-$') db_ready = [] -opt_out = ['#anxiety', '#foreveralonewomen'] +opt_out = ['#anxiety', '#foreveralonewomen', '#linuxmasterrace'] def db_init(db, conn_name): From cb63b1fe30c0a9cf341159447d32005f3be20a26 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sat, 6 May 2017 23:05:51 -0400 Subject: [PATCH 49/87] add in local changes. --- plugins/attacks.py | 2 +- plugins/check_conn.py | 15 +++++++++++++++ plugins/correction.py | 6 ++++++ plugins/herald.py | 4 ++-- plugins/link_announcer.py | 5 ++++- plugins/penis.py | 2 +- plugins/weather.py | 8 +++++++- 7 files changed, 36 insertions(+), 6 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 03e5fae8d..5b53e1554 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -10,7 +10,7 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) -opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama'] +opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#linuxmasterrace'] def is_valid(target): """ Checks if a string is a valid IRC nick. """ diff --git a/plugins/check_conn.py b/plugins/check_conn.py index a23675834..58a45b60e 100644 --- a/plugins/check_conn.py +++ b/plugins/check_conn.py @@ -14,3 +14,18 @@ def conncheck(nick, bot, notice): bot.connections[conn].connect() # Send a message from each irc network connection to the nick that issued the command bot.connections[conn].message(nick, "just letting you know I am here. {}".format(conn)) + + +@hook.command(permissions=["botcontrol"]) +def reconnect(text, notice, bot): + """This command is an effort to use the connect method to manually reconnect to a network if it has been disconnected.""" + if text in bot.connections: + notice("You are asking me to reconnect to {}. I have that network in my config and will attempt to reconnect.".format(text)) + bot.connections[text].connect() + print(dir(bot.connections[text])) + print("self._quit = {}, self._connected = {}, self._transport = {}".format(bot.connections[text]._quit, bot.connections[text]._connected, bot.connections[text]._transport )) + #bot.connections[text].close() + #bot.connections[text]._quit = False + + else: + notice("You are asking me to reconnect to {}. I do not have that network in my config please specify a valid network.".format(text)) diff --git a/plugins/correction.py b/plugins/correction.py index 941f9815e..e7c82bb22 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -6,6 +6,10 @@ correction_re = re.compile(r"^[sS]/(.*/.*(?:/[igx]{,4})?)\S*$") +# define channels that want this plugin disabled. + +opt_out = ['#linuxmasterrace'] + def shorten_msg(msg): out = (msg[:500]) if len(msg) > 500 else msg return out @@ -16,6 +20,8 @@ def correction(match, conn, nick, chan, message): :type conn: cloudbot.client.Client :type chan: str """ + if chan in opt_out: + return groups = [b.replace("\/", "/") for b in re.split(r"(?|<)') + decoy = re.compile('[Òo○O0öøóóȯôőŏᴏōο](<|>|<)') colors_re = re.compile("\x02|\x03(?:\d{1,2}(?:,\d{1,2})?)?", re.UNICODE) bino_re = re.compile('b+i+n+o+', re.IGNORECASE) offensive_re = re.compile('卐') diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 4e7aad16c..21b4adc79 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -19,6 +19,7 @@ (1024 ** 0, 'B'), ] +doxx_title = "Eve Ben Ezra" def bytesto(bytes, system = traditional): """ converts bytes to something """ @@ -30,7 +31,7 @@ def bytesto(bytes, system = traditional): return str(amount) + suffix @hook.regex(url_re) -def print_url_title(message, match, chan): +def print_url_title(message, match, chan, nick): if chan in opt_out: return HEADERS = { @@ -53,5 +54,7 @@ def print_url_title(message, match, chan): html = BeautifulSoup(content) r.close() title = " ".join(html.title.text.strip().splitlines()) + if doxx_title in title: + message("Nick {} just pasted {} in {} whose title matches a doxx url. Please investigate.".format(nick, match.group(), chan), "#staff") out = "Title: \x02{}\x02".format(title) message(out, chan) diff --git a/plugins/penis.py b/plugins/penis.py index 0761d8160..819f80d3f 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): diff --git a/plugins/weather.py b/plugins/weather.py index 5f54bcefb..5b5baca59 100644 --- a/plugins/weather.py +++ b/plugins/weather.py @@ -25,6 +25,10 @@ class APIError(Exception): wunder_api = "http://api.wunderground.com/api/{}/forecast/geolookup/conditions/q/{}.json" +# Define channels that have opted out of this command. +opt_out = ["#linuxmasterrace"] + + # Change this to a ccTLD code (eg. uk, nz) to make results more targeted towards that specific country. # bias = None @@ -106,12 +110,14 @@ def get_location(nick): return location @hook.command("weather", "we", autohelp=False) -def weather(text, reply, db, nick, notice): +def weather(text, reply, db, nick, chan, notice): """weather -- Gets weather data for .""" if not wunder_key: return "This command requires a Weather Underground API key." if not dev_key: return "This command requires a Google Developers Console API key." + if chan in opt_out: + return location = "" # If no input try the db From 3808f3cdfaaa44703e11244461297aef5c7a7fd3 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Mon, 5 Jun 2017 17:10:47 -0400 Subject: [PATCH 50/87] add channel changes --- plugins/attacks.py | 2 +- plugins/herald.py | 2 +- plugins/penis.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 5b53e1554..3878f49c7 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -10,7 +10,7 @@ nick_re = re.compile("^[A-Za-z0-9_|.\-\]\[\{\}]*$", re.I) -opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#linuxmasterrace'] +opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#linuxmasterrace', '#bipolar'] def is_valid(target): """ Checks if a string is a valid IRC nick. """ diff --git a/plugins/herald.py b/plugins/herald.py index a21ee1a51..284b2b230 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -6,7 +6,7 @@ import random db_ready = [] -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot'] +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1'] delay = 10 floodcheck = {} diff --git a/plugins/penis.py b/plugins/penis.py index 819f80d3f..405797f81 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 766975e587b8f63a7255845734968c04258bf1b4 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 18 Jun 2017 13:40:12 -0400 Subject: [PATCH 51/87] add a kero saying --- plugins/jokes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/jokes.py b/plugins/jokes.py index 826ab05f1..6f0d6a2a8 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -125,7 +125,7 @@ def triforce(message): @hook.command("kero", "kerowhack") def kero(text, message): """Returns the text input the way kerouac5 would say it.""" - saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird.", "JUGGALOS COME GET YOUR FREE QUINOA WITH RANCH"] + saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird.", "JUGGALOS COME GET YOUR FREE QUINOA WITH RANCH", "well then you have a bastardized shitty version of something good"] keror = random.choice(saying).upper() if keror == "???? WTF IS": out = keror + " " + text.upper() From 7df011ab33394c120639b4eb3775c9faef9ceb9a Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 18 Jun 2017 13:40:51 -0400 Subject: [PATCH 52/87] add refreshed version of commands --- docs/user/commands.md | 460 +++++++++++++++++++++++++++++++----------- 1 file changed, 340 insertions(+), 120 deletions(-) diff --git a/docs/user/commands.md b/docs/user/commands.md index 0d23390f5..7ac388621 100644 --- a/docs/user/commands.md +++ b/docs/user/commands.md @@ -1,6 +1,6 @@ gonzobot Command list ------ -**8ball (8, eightball):** <question> - asks the all knowing magic electronic eight ball <question> +**8ball (eightball, 8):** <question> - asks the all knowing magic electronic eight ball <question> **about**: -- Gives information about CloudBot. Use .about license for licensing information @@ -8,25 +8,37 @@ gonzobot Command list **adduser**: <user> <group> - adds <user> to <group> ( *Permission required:* permissions_users) +**aesthetic (vapor, fw):** <string> -- Converts <string> to full width characters. + **amazon (az):** <query> -- Searches Amazon for query **antonym**: <word> -- Returns a list of antonyms for <word>. -**ask (gonzobot, cleverbot, cb):** <question> -- Asks Cleverbot <question> +**ask (gonzo, gonzobot, cb, cleverbot):** chat with cleverbot.com + +**awesome (cool, iscool):** Prints a webpage to show <nick> how awesome they are. -**ban**: [channel] <user> - bans <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) +**ban**: <channel> <user> - bans <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) **bancount**: <user> - gets a count of <user>'s minecraft bans from fishbans +**band (la):** <artist> - displays information about <artist>. + +**bang**: when there is a duck on the loose use this command to shoot it. + **bans (fishbans):** <user> - gets information on <user>'s minecraft bans from fishbans -**base64**: base64 <string> -- Encode <string> with base64. +**base64**: <string> -- Encode <string> with base64. -**beats**: beats -- Gets the current time in .beats (Swatch Internet Time). +**beats**: -- Gets the current time in .beats (Swatch Internet Time). -**bing (bsearch):** <query> - returns the first bing search result for <query> +**beer**: <user> - give beer to <user> -**bingimage**: <query> - returns the first bing image search result for <query> +**befriend**: when there is a duck on the loose use this command to befriend it before someone else shoots it. + +**bible (passage):** Prints the specified passage from the Bible + +**bitcoin (btc):** -- Returns current bitcoin value **bite**: bites the specified nick somewhere random. @@ -36,83 +48,135 @@ gonzobot Command list **books (gbooks):** books <query> -- Searches Google Books for <query>. -**bottomten (pointsbottom, hated):** .bottomten or .pointsbottom prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. +**bottomten (hated, pointsbottom):** .bottomten or .pointsbottom prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. **brainfuck (bf):** <prog> - executes <prog> as Brainfuck code -**btc (bitcoin):** [bitpay|coinbase|bitstamp] - gets bitcoin exchange rate using <exchange>, defaulting to blockchain +**brekky (brekkie):** <user> - give brekkie to <user> **cake**: <user> - gives <user> an awesome cake -**capitalise (capitalize):** capitalize <string> -- Capitalizes <string>. +**cakeday**: cakeday <reddituser> will return the cakeday for the given reddit username. + +**capitalize (capitalise):** <string> -- Capitalizes <string>. **catgifs**: gets a fucking cat gif. **cats**: gets a fucking fact about cats. -**choose**: <choice1>, [choice2], [choice3], etc. - randomly picks one of the given choices +**cereal**: <user> - give cereal to <user> + +**changetopic (question, discuss):** generates a random question to help start a conversation or change a topic -**coin**: [amount] - flips [amount] coins +**cheese**: <user> - give cheese to <user> + +**chicken**: <user> - give chicken to <user> + +**chocolate**: <user> - give chocolate to <user> + +**choose**: <choice1>, <choice2>, <choice3>, etc. - randomly picks one of the given choices + +**clinton**: clinton a user. + +**coffee**: <user> - give coffee to <user> + +**coin**: <amount> - flips <amount> coins **color_parse**: Command has no documentation. +**compliment**: <user> -- Makes the bot compliment <user>. + **confucious**: confucious say man standing on toilet is high on pot. +**conncheck**: This command is an effort to make the bot reconnect to a network if it has been disconnected. ( *Permission required:* botcontrol) + **cookie**: <user> - gives <user> a cookie -**cycle**: [#channel] - cycles [#channel], or the caller's channel if no channel is specified ( *Permission required:* botcontrol) +**crypto (cryptocurrency):** <ticker> -- Returns current value of a cryptocurrency + +**cycle**: <#channel> - cycles <#channel>, or the caller's channel if no channel is specified ( *Permission required:* botcontrol) -**cypher**: <pass> <string> - cyphers <string> with <password> +**cypher (cipher):** <pass> <string> -- cyphers <string> with <password> **dadjoke**: love em or hate em, bring on the dad jokes. -**debase64 (unbase64):** unbase64 <string> -- Decode <string> with base64. +**debase64 (unbase64):** <string> -- Decode <string> with base64. -**decrypt**: <pass> <string> - decrypts <string> with <pass>. (can only decrypt strings encrypted on this bot) +**decypher (decipher):** <pass> <string> - decyphers <string> with <password> -**decypher**: <pass> <string> - decyphers <string> with <password> +**define (dictionary):** <word> -- Returns a dictionary definition from Wordnik for <word>. -**define (dictionary):** <word> -- Returns a dictionary definition for <word>. +**deleteherald**: deleteherald <nickname> Delete <nickname>'s herald. ( *Permission required:* botcontrol, snoonetstaff) -**deluser**: <user> [group] - removes <user> from [group], or from all groups if no group is specified ( *Permission required:* permissions_users) +**deluser**: <user> <group> - removes <user> from <group>, or from all groups if no group is specified ( *Permission required:* permissions_users) -**deop**: [channel] <user> - deops <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_op, op) +**deop**: <channel> <user> - deops <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_op, op) **derpify**: derpify <text> - returns some amusing responses from your input. -**devoice**: [channel] <user> - devoices <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_voice, op) +**devoice**: <channel> <user> - devoices <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_voice, op) **dig**: .dig <domain> <recordtype> returns a list of records for the specified domain valid record types are A, NS, TXT, and MX. If a record type is not chosen A will be the default. -**dinner (wtfsimfd):** - TELLS YOU WHAT THE F**K YOU SHOULD MAKE FOR DINNER - **disableregex**: Command has no documentation. ( *Permission required:* botcontrol) +**dogecoin (doge):** -- Returns current dogecoin value + **doit**: prints a do it line, example: mathmaticians do with a pencil **domain (domainr):** <domain> - uses domain.nr's API to search for a domain, and similar domains +**dominate (bdsm):** Just a little bit of kinky fun. + +**doobie**: <user> - pass the doobie to <user> + **down (offline, up):** <url> - checks if <url> is online or offline +**dp (g, dogpile):** Uses the dogpile search engine to find shit on the web. + +**dpis (gis):** Uses the dogpile search engine to search for images. + +**dragon (ds):** Searches the dragonvale wiki for the specified text. + **drama**: <phrase> - gets the first paragraph of the Encyclopedia Dramatica article on <phrase> **drink**: <nick>, makes the user a random cocktail. +**duckforgive**: Allows people to be removed from the mandatory cooldown period. ( *Permission required:* op, ignore) + +**duckkic (starthun, stophun):** dummmy command to make sure people use the full command so OPS can block it if they need to. + +**duckkick**: If the bot has OP or half-op in the channel you can specify .duckkick enable|disable so that people are kicked for shooting or befriending a non-existent duck. Default is off. + +**duckmerge**: Moves the duck scores from one nick to another nick. Accepts two nicks as input the first will have their duck scores removed the second will have the first score added. Warning this cannot be undone. ( *Permission required:* botcontrol) + +**ducks**: Prints a users duck stats. If no nick is input it will check the calling username. + +**duckstats**: Prints duck statistics for the entire channel and totals for the network. + +**dwi (dealwithit):** Tell some one in the channel to deal with it. File located in dwi.py + **e (etymology):** <word> - retrieves the etymology of <word> -**enableregex**: Command has no documentation. ( *Permission required:* botcontrol) +**eggcalc (dragoncalc, dc):** Parses dragonvalebreedingguide.com for a list of possible dragons based on the incubation time. Enter the time as 5 hours, 30 minutes. For upgraded incubation times put 'upgrade' at the front of the time length -**encrypt**: <pass> <string> - encrypts <string> with <pass>. (<string> can only be decrypted using this bot) +**enableregex**: Command has no documentation. ( *Permission required:* botcontrol) -**escape**: escape <string> -- Unicode escapes <string>. +**escape**: <string> -- Unicode escapes <string>. **expand**: <url> - unshortens <url> -**f (forget):** <word> - forgets previously remembered <word> ( *Permission required:* delfactoid) +**f (forget):** <word> - forgets previously remembered <word> ( *Permission required:* op) **fact**: Gets a random fact about numbers or dates. -**feed (news, rss):** <feed> -- Gets the first three items from the RSS/ATOM feed <feed>. +**feed (rss, news):** <feed> -- Gets the first three items from the RSS/ATOM feed <feed>. + +**fight (spar, challenge, fite):** <nick>, makes you fight <nick> and generates a winner. + +**fix**: fixes a flipped over table. ┬─┬ノ(ಠ_ಠノ) + +**flenny**: flenny is watching. **flip**: <text> -- Flips <text> over. @@ -120,129 +184,197 @@ gonzobot Command list **flushlog**: Command has no documentation. ( *Permission required:* botcontrol) -**fml**: - gets a random quote from fmyfife.com +**fmk**: Fuck, Marry, Kill + +**fml**: - gets a random quote from fmylife.com **fortune**: - hands out a fortune cookie +**fos (foaas, fuckoff):** fos <name> to tell some one to fuck off or just .fos for a generic fuckoff + +**fp (facepalm):** Expresses your frustration with another user. File located in dwi.py + +**friends**: Prints a list of the top duck friends in the channel, if 'global' is specified all channels in the database are included. + +**fuck**: returns something funny. + **generatehelp**: Dumps a list of commands with their help text to the docs directory formatted using markdown. ( *Permission required:* botcontrol) **geoip**: geoip <host|ip> -- Looks up the physical location of <host|ip> using Maxmind GeoLite -**gitio**: <url> [custom] - shortens a github URL <url> using git.io with [custom] as an optional custom shortlink, +**ghissue (issue):** <username|repo> <number> - gets issue <number>'s summary, or the open issue count if no issue is specified -**global_ignore**: <nick|mask> -- ignores all input from <nick|mask> in ALL channels. ( *Permission required:* ignore) +**gif (giphy):** Searches giphy.com for a gif using the provided search term. -**global_unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in ALL channels. ( *Permission required:* ignore) +**gitio**: <url> <custom> - shortens a github URL <url> using git.io with <custom> as an optional custom shortlink, -**glomp**: glomps the specified nick. +**global_ignore**: <nick|mask> -- ignores all input from <nick|mask> in ALL channels. ( *Permission required:* botcontrol) -**googl**: <url> [custom] - shorten <url> using goo.gl with [custom] as an option custom shortlink, +**global_unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in ALL channels. ( *Permission required:* botcontrol) -**google (search, g):** <query> - returns the first google search result for <query> +**glomp**: glomps the specified nick. + +**googl**: <url> <custom> - shorten <url> using goo.gl with <custom> as an option custom shortlink, -**googleimage (gis, image):** <query> - returns the first google image result for <query> +**google_translate**: <source language <target language>> <sentence> - translates <sentence> from source language (default autodetect) **gperms**: <group> - lists permissions given to <group> ( *Permission required:* permissions_users) -**grab**: grab <nick> grabs the last message from the +**grab**: grab <nick> grabs the last message from the specified nick and adds it to the quote database -**grabrandom**: grabs a random quote from the grab database +**grabrandom (grabr):** grabs a random quote from the grab database -**grabsearch**: .grabsearch <text> matches "text" against nicks or grab strings in the database +**grabsearch (grabs):** .grabsearch <text> matches "text" against nicks or grab strings in the database **groups (listgroups, permgroups):** - lists all valid groups ( *Permission required:* permissions_users) +**gse**: <query> -- Returns first Google search result for <query>. + +**gseis (image):** <query> -- Returns first Google Images result for <query>. + **gusers**: <group> - lists users in <group> ( *Permission required:* permissions_users) -**hash**: hash <string> -- Returns hashes of <string>. +**halaal (halal):** Serves halaal dishes to some one in the channel -**help**: [command] - gives help for [command], or lists all available commands if no command is specified +**hash**: <string> -- Returns hashes of <string>. -**herald**: herald [message] adds a greeting for your nick that will be announced everytime you join the channel. +**help**: <command> - gives help for <command>, or lists all available commands if no command is specified -**hookup**: matches two users from the channel in a sultry scene. +**herald**: herald <message> adds a greeting for your nick that will be announced everytime you join the channel. Using .herald show will show your current herald and .herald delete will remove your greeting. **horoscope**: <sign> - get your horoscope +**hunt_opt_out**: Running this command without any arguments displays the status of the current channel. hunt_opt_out add #channel will disable all duck hunt commands in the specified channel. hunt_opt_out remove #channel will re-enable the game for the specified channel. ( *Permission required:* op, ignore) + +**icecream**: <user> - give icecream to <user> + **ignore**: <nick|mask> -- ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore) **imdb**: imdb <movie> - gets information about <movie> from IMDb -**imgur**: [search term] / [/r/subreddit] / [/user/username] / memes / random - returns a link to a random imgur image based +**imgur**: <search term> / </r/subreddit> / </user/username> / memes / random - returns a link to a random imgur image based -**imguralbum (multiimgur, imgalbum, album):** [search term] / [/r/subreddit] / [/user/username] / memes / random - returns a link to lots of random images +**imguralbum (imgalbum, multiimgur, album):** <search term> / </r/subreddit> / </user/username> / memes / random - returns a link to lots of random images **info**: <factoid> - shows the source of a factoid **insult**: <user> - insults <user> -**isbase64 (checkbase64):** isbase64 <string> -- Checks if <string> is a valid base64 encoded string +**isbase64 (checkbase64):** <string> -- Checks if <string> is a valid base64 encoded string -**isgd**: <url> [custom] - shortens a url using is.gd with [custom] as an optional custom shortlink, +**isgd**: <url> <custom> - shortens a url using is.gd with <custom> as an optional custom shortlink, -**issues**: <username|repo> [number] - gets issue [number]'s summary, or the open issue count if no issue is specified +**issafe**: <website> -- Checks the website against Google's Safe Browsing List. **isup**: <url> - uses isup.me to check if <url> is online or offline -**join**: <channel> - joins <channel> ( *Permission required:* botcontrol) +**join**: <channel> - joins <channel> ( *Permission required:* botcontrol, snoonetstaff) **karma (ruser):** karma <reddituser> will return the information about the specified reddit username +**kenm**: Wisdom from Ken M. + **kernel**: - gets a list of linux kernel versions -**kick**: [channel] <user> - kicks <user> from [channel], or from the caller's channel if no channel is specified ( *Permission required:* op_kick, op) +**kero (kerowhack):** Returns the text input the way kerouac5 would say it. + +**keto**: <user> - give keto food to <user> + +**kick**: <channel> <user> - kicks <user> from <channel>, or from the caller's channel if no channel is specified ( *Permission required:* op_kick, op) + +**kill (end):** <user> - kills <user> + +**killers**: Prints a list of the top duck killers in the channel, if 'global' is specified all channels in the database are included. -**kill**: <user> - kills <user> +**kosher**: Servers a Kosher dish to some one in the channel. Part of halal.py. Made with help of snoonet user Yat -**la (lartist):** <artist> prints information about the specified artist +**langlist (tlist):** List the languages/codes that can be used to translate. Translation is powered by Yandex https://translate.yandex.com **lart**: <user> - LARTs <user> -**lastfm (np, l):** [user] [dontsave] - displays the now playing (or last played) track of LastFM user [user] +**lastfm (l, np, last):** <user> <dontsave> - displays the now playing (or last played) track of LastFM user <user> -**lastfmcompare (compare, lc):** [user] ([user] optional) - displays the now playing (or last played) track of LastFM user [user] +**lastfmcompare (lc, compare):** <user> (<user> optional) - displays the now playing (or last played) track of LastFM user <user> -**lastgrab**: prints the last grabbed quote from <nick>. +**lastgrab (lgrab):** prints the last grabbed quote from <nick>. + +**lawyerjoke**: returns a lawyer joke, so lawyers know how much we hate them **leet**: <text> -- Makes <text> more 1337h4x0rz. -**length**: length <string> -- Gets the length of <string> +**length**: <string> -- Gets the length of <string> + +**lenny**: why the shit not lennyface + +**libreband (librela):** <artist> - displays information about <artist>. + +**librecompare (librelc):** This command is not supported in the libre.fm API + +**librefm (librelast, librenp):** <user> <dontsave> - displays the now playing (or last played) track of libre.fm user <user> + +**librelibrelta (libretopall):** Grabs a list of the top artists in the last year for a libre.fm username. You can set your librefm username with .l username + +**libreltm (libretopmonth):** Grabs a list of the top artists in the last month for a libre.fm username. You can set your librefm username with .l username + +**libreltw (libretopweek):** Grabs a list of the top artists in the last week for a libre.fm username. You can set your librefm username with .l username + +**libreplays**: This command is not supported in the libre.fm API + +**libretopartists (libreta):** Grabs a list of the top artists for a libre.fm username. You can set your libre.fm username with .librefm username + +**libretoptrack (libretoptracks, librett, libretop):** Grabs a list of the top tracks for a libre.fm username **listbad**: Returns a list of bad words specify a channel to see words for a particular channel ( *Permission required:* badwords) +**listchans**: -- Lists the current channels the bot is in ( *Permission required:* botcontrol) + **listfacts**: - lists all available factoids **listregex**: Command has no documentation. ( *Permission required:* botcontrol) -**lmgtfy (gfy):** [phrase] - gets a lmgtfy.com link for the specified phrase +**litecoin (ltc):** -- Returns current litecoin value + +**lmgtfy (gfy):** <phrase> - gets a lmgtfy.com link for the specified phrase + +**load_geoip**: Command has no documentation. ( *Permission required:* botcontrol) **loadbad**: Should run on start of bot to load the existing words into the regex ( *Permission required:* badwords) -**lock**: [channel] - locks [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_lock, op) +**locate (maps):** <location> -- Finds <location> on Google Maps. -**lower**: lower <string> -- Convert string to lowercase. +**lock**: <channel> - locks <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_lock, op) -**lt (ltrack):** Grabs a list of the top tracks for a last.fm username +**lower**: <string> -- Convert string to lowercase. -**lta (topartist):** Grabs a list of the top artists for a last.fm username. You can set your lastfm username with .l username +**lta (topall):** Grabs a list of the top artists in the last year for a last.fm username. You can set your lastfm username with .l username -**ltc (litecoin):** - gets litecoin exchange rate from BTC-E +**ltm (topmonth):** Grabs a list of the top artists in the last month for a last.fm username. You can set your lastfm username with .l username **ltop (ltt):** Grabs a list of the top tracks for a last.fm username -**mcping (mcp):** <server[:port]> - gets info about the Minecraft server at <server[:port]> +**ltw (topweek):** Grabs a list of the top artists in the last week for a last.fm username. You can set your lastfm username with .l username + +**lurve (luv, luff):** lurves all over <user> + +**lyrics**: lyrics <artist and/or song> will fetch the first 150 characters of a song and a link to the full lyrics. + +**mcping (mcp):** <server<:port>> - gets info about the Minecraft server at <server<:port>> **mcstatus**: - gets the status of various Mojang (Minecraft) servers -**mcuser (haspaid, mcpaid):** <username> - gets information about the Minecraft user <account> +**mcuser (mcpaid, haspaid):** <username> - gets information about the Minecraft user <account> **mcwiki**: mcwiki <phrase> - gets the first paragraph of the Minecraft Wiki article on <phrase> -**me (act):** [#channel] <action> - acts out <action> in a [#channel], or in the current channel of none is specified ( *Permission required:* botcontrol) +**me (act):** <#channel> <action> - acts out <action> in a <#channel>, or in the current channel of none is specified ( *Permission required:* botcontrol, snoonetstaff) + +**message (sayto):** <name> <message> - says <message> to <name> ( *Permission required:* botcontrol, snoonetstaff) + +**metacritic (mc):** <all|movie|tv|album|x360|ps3|pc|gba|ds|3ds|wii|vita|wiiu|xone|ps4> <title> - gets rating for <title> from -**message (sayto):** <name> <message> - says <message> to <name> ( *Permission required:* botcontrol) +**metar**: metars <ICAO station code> returns the metars information for the specified station. A list of station codes can be found here: http://weather.rap.ucar.edu/surface/stations.txt -**metacritic (mc):** [all|movie|tv|album|x360|ps3|pc|gba|ds|3ds|wii|vita|wiiu|xone|ps4] <title> - gets rating for <title> from +**milkshake**: <user> - give a milkshake to <user> **minuspts**: prints the things you have liked @@ -252,13 +384,29 @@ gonzobot Command list **mm (rmpoint):** .rmpoint or (.mm) <thing> subtracts a point from the <thing> -**mods (moderates):** This plugin prints the list of subreddits a user moderates listed in a reddit users profile. Private subreddits will not be listed. +**monsterfriends**: Prints a list of the top monster friends in the channel, if 'global' is specified all channels in the database are included. + +**monsterkillers**: Prints a list of the top monster killers in the channel, if 'global' is specified all channels in the database are included. + +**monsters**: Prints a users monster stats. If no nick is input it will check the calling username. + +**monsterstats**: Prints monster statistics for the entire channel and totals for the network. + +**moregrab**: if a grab search has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified. + +**moremod**: if a sub or mod list has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified. + +**moreprofile**: If a category search has lots of results the results are paginated. If the most recent search is paginated the pages are stored for retrieval. If no argument is given the next page will be returned else a page number can be specified. + +**morescore**: if a score list has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified. + +**muffin**: <user> - give muffin to <user> **munge**: <text> -- Munges up <text>. -**mute**: [channel] - mutes [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_mute, op) +**mute**: <channel> - mutes <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_mute, op) -**namegen**: [generator|list] - generates some names using the chosen generator, or lists all generators if 'list' is specified +**namegen**: <generator|list> - generates some names using the chosen generator, or lists all generators if 'list' is specified **nba**: nba <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. @@ -276,31 +424,47 @@ gonzobot Command list **nk**: outputs a random North Korea propoganda slogan +**noodles**: <user> - give noodles to <user> + **note (todo, notes):** <add|list|get|del|clear> args - manipulates your list of notes +**nugget**: <user> - give nuggets to <user> + +**objgrowth**: Command has no documentation. ( *Permission required:* botcontrol) + +**objtypes**: Command has no documentation. ( *Permission required:* botcontrol) + **octopart (octo):** octopart <keyword> -- Search for any part on the Octopart database. -**op**: [channel] <user> - ops <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_op, op) +**op**: <channel> <user> - ops <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_op, op) + +**pancake**: <user> - give pancakes to <user> + +**part**: <#channel> - parts <#channel>, or the caller's channel if no channel is specified ( *Permission required:* botcontrol, snoonetstaff) + +**password**: <length <types>> - generates a password of <length> (default 12). <types> can include 'alpha', 'no caps', 'numeric', 'symbols' or any combination: eg. 'numbers symbols' (default: alpha numeric no caps) -**osrc**: <github user> - gets an Open Source Report Card for <github user> from osrc.dfm.io +**pasta**: <user> - give pasta to <user> -**part**: [#channel] - parts [#channel], or the caller's channel if no channel is specified ( *Permission required:* botcontrol) +**penis (bepis):** much dongs, very ween, add a user nick as an arguement for slightly different 'output' -**password**: [length [types]] - generates a password of <length> (default 10). [types] can include 'alpha', 'no caps', +**pie**: <user> - give pie to <user> **pig (piglatin):** pig <text> -- Converts <text> to pig latin. -**ping**: <host> [count] - pings <host> [count] times +**ping**: <host> <count> - pings <host> <count> times -**plpaste**: <command> - pastes the plugin file that contains <command> ( *Permission required:* plpaste) +**pizza**: <user> - give pizza to <user> + +**plays**: <artist> - displays the current user's playcount for <artist>. You must have your username saved. + +**plpaste**: <command> - pastes the plugin file that contains <command> ( *Permission required:* botcontrol) **pluspts**: prints the things you have liked **points**: .points <thing> will print the total points for <thing> in the channel. -**poll**: .poll <description>[: choice1, choice2, ..., choice n] - Begins a poll if you do not already have an active poll; choices default to [yes|no]; end poll and get results with '.poll close'. - -**polls**: .polls [user] - Gets a list of active polls, or information on a specific poll. +**poll**: Command has no documentation. **potato**: <user> - makes <user> a tasty little potato @@ -308,57 +472,83 @@ gonzobot Command list **pre (scene):** pre <query> -- searches scene releases using orlydb.com +**present (gift):** <user> - gives gift to <user> + +**profile**: <nick> <category> Returns a user's saved profile data from "<category>", or lists all available profile categories for the user if no category specified + +**profileadd**: <category> <content> Adds data to your profile in the current channel under "<category>" + +**profileclear**: Clears all of your profile data in the current channel + +**profiledel**: <category> Deletes "<category>" from a user's profile + **pronounce (sounditout):** <word> -- Returns instructions on how to pronounce <word> with an audio example. **pun**: Come on everyone loves puns right? +**pymdiff**: Command has no documentation. ( *Permission required:* botcontrol) + +**pymsummary**: Command has no documentation. ( *Permission required:* botcontrol) + **python (py):** <python code> - executes <python code> using eval.appspot.com -**q (quote):** [#chan] [nick] [#n] OR add <nick> <message> - gets the [#n]th quote by <nick> (defaulting to random) +**q (quote):** <#chan> <nick> <#n> OR add <nick> <message> - gets the <#n>th quote by <nick> (defaulting to random) **qrcode (qr):** <link> - returns a link to a QR code image for <link> -**quiet**: [channel] <user> - quiets <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_quiet, op) +**quiet**: <channel> <user> - quiets <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_quiet, op) + +**quran (verse):** Prints the specified Qur'anic verse(s) and its/their translation(s) -**r (remember):** <word> [+]<data> - remembers <data> with <word> - add + to <data> to append ( *Permission required:* addfactoid) +**r (remember):** <word> <+><data> - remembers <data> with <word> - add + to <data> to append ( *Permission required:* op) **rainbow**: <text> -- Gives <text> rainbow colors. +**randomusefulsite**: Command has no documentation. + **raw**: <command> - sends <command> as a raw IRC command ( *Permission required:* botcontrol) -**recipe**: [term] - gets a recipe for [term], or gets a random recipe if no term is specified +**reconnect**: This command is an effort to use the connect method to manually reconnect to a network if it has been disconnected. ( *Permission required:* botcontrol) -**reddit**: <subreddit> [n] - gets a random post from <subreddit>, or gets the [n]th post in the subreddit +**reddit**: <subreddit> <n> - gets a random post from <subreddit>, or gets the <n>th post in the subreddit **regexstatus**: Command has no documentation. ( *Permission required:* botcontrol) **remind (reminder, in):** <1 minute, 30 seconds>: <do task> -- reminds you to <do task> in <1 minute, 30 seconds> -**remove**: [channel] <user> - force removes <user> from [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_rem, op) +**remove**: <user> - force removes <user> from the caller's channel. ( *Permission required:* op_rem, op) **resethistory**: - resets chat history for the current channel **resetregex**: Command has no documentation. ( *Permission required:* botcontrol) -**restart**: [reason] - restarts me with [reason] as its quit message. ( *Permission required:* botcontrol) +**restart**: <reason> - restarts me with <reason> as its quit message. ( *Permission required:* botcontrol) + +**results**: <user> -- Shows current results from <user>'s poll. If <user> is empty, -**reverse**: reverse <string> -- Reverses <string>. +**reverse**: <string> -- Reverses <string>. **rmbad (delbad):** removes the specified word from the specified channels bad word list ( *Permission required:* badwords) **roll (dice):** <dice roll> - simulates dice rolls. Example: 'dice 2d20-d5+4 roll 2': D20s, subtract 1D5, add 4 -**rot13**: rot13 <string> -- Encode <string> with rot13. +**rot13**: <string> -- Encode <string> with rot13. **rottentomatoes (rt):** rt <title> -- gets ratings for <title> from Rotten Tomatoes +**ruad (rud, ruadick):** checks ruadick.com to see if you're a dick on reddit + **sandwich**: <user> - give a tasty sandwich to <user> -**say**: [#channel] <message> - says <message> to [#channel], or to the caller's channel if no channel is specified ( *Permission required:* botcontrol) +**say**: <#channel> <message> - says <message> to <#channel>, or to the caller's channel if no channel is specified ( *Permission required:* botcontrol, snoonetstaff) + +**scone**: <user> - give scone to <user> + +**scuser**: <query> -- Searches for users on SoundCloud. **seen**: <nick> <channel> - tells when a nickname was last in active in one of my channels -**shorten**: <url> [custom] - shortens a url with [custom] as an optional custom shortlink +**shorten**: <url> <custom> - shortens a url with <custom> as an optional custom shortlink **showtells**: showtells -- View all pending tell messages (sent in a notice). @@ -366,31 +556,47 @@ gonzobot Command list **snopes**: snopes <topic> -- Searches snopes for an urban legend about <topic>. +**soundcloud (sc):** <query> -- Searches for tracks on SoundCloud. + **spalbum**: spalbum <album> -- Search Spotify for <album> -**spartist**: spartist <artist> -- Search Spotify for <artist> +**spank**: <user> - Spanks a <user> + +**spartist (artist):** spartist <artist> -- Search Spotify for <artist> **spell**: spell <word/sentence> -- Check spelling of a word or sentence. **spotify (sptrack):** spotify <song> -- Search Spotify for <song> -**steam**: steam [Takes a Steam ID_64 formatted ID and returns a ID_32 formatted IDsearch] - Search for specified +**starthunt**: This command starts a duckhunt in your channel, to stop the hunt use .stophunt -**steamid (su, sid, steamuser):** steamid <username> -- gets the steam ID of <username>. Uses steamcommunity.com/id/<nickname>. +**steak**: <user> - give a steak dinner to <user> + +**steam**: <query> - Search for specified game/trailer/DLC + +**steamid (sid, steamuser, su):** steamid <username> -- gets the steam ID of <username>. Uses steamcommunity.com/id/<nickname>. **stock**: <symbol> -- gets stock information -**stop (quit):** [reason] - stops me with [reason] as its quit message. ( *Permission required:* botcontrol) +**stophunt**: This command stops the duck hunt in your channel. Scores will be preserved + +**stopthebot**: <reason> - stops me with <reason> as its quit message. ( *Permission required:* botcontrol) + +**strax**: Strax quote. -**subinfo (subreddit):** subinfo <subreddit> fetches information about the specified subreddit. Do not include /r/ when specifying a subreddit. +**subinfo (sub, rinfo, subreddit):** subinfo <subreddit> fetches information about the specified subreddit. -**submods (rmods):** submods <subreddit> prints the moderators of the specified subreddit. Do not include /r/ when specifying a subreddit. +**submods (mods, rmods):** submods <subreddit> prints the moderators of the specified subreddit. + +**subs (moderates):** This plugin prints the list of subreddits a user moderates listed in a reddit users profile. Private subreddits will not be listed. **suggest**: suggest <phrase> -- Gets suggested phrases for a google search **superscript**: <text> -- Makes <text> superscript. -**swapcase**: swapcase <string> -- Swaps the capitalization of <string>. +**sushi**: <user> - give sushi to <user> + +**swapcase**: <string> -- Swaps the capitalization of <string>. **synonym**: <word> -- Returns a list of synonyms for <word>. @@ -398,65 +604,81 @@ gonzobot Command list **table**: <text> -- (╯°□°)╯︵ <ʇxǝʇ> +**taco**: <user> - give a taco to <user> + +**taf**: tafs <ICAO station code> returns the taf information for the specified station. A list of station codes can be found here: http://weather.rap.ucar.edu/surface/stations.txt + +**tea**: <user> - give tea to <user> + **tell**: tell <nick> <message> -- Relay <message> to <nick> when <nick> is around. -**tfw**: Command has no documentation. +**threaddump**: Command has no documentation. ( *Permission required:* botcontrol) + +**time**: <location> -- Gets the current time in <location>. -**titlecase**: title <string> -- Convert string to title case. +**titlecase**: <string> -- Convert string to title case. -**topic**: [channel] <topic> - changes the topic to <topic> in [channel], or in the caller's channel ( *Permission required:* op_topic, op) +**topic**: <channel> <topic> - changes the topic to <topic> in <channel>, or in the caller's channel ( *Permission required:* op_topic, op) **topten (pointstop, loved):** .topten or .pointstop prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. +**tran (translate):** tran <language or language code> text to translate. Translation is Powered by Yandex https://translate.yandex.com + +**triforce**: returns a triforce! + +**trump**: trump a user. + **tv (tv_next):** tv <series> -- Get the next episode of <series>. **tv_prev (tv_last):** tv_last <series> -- Gets the most recently aired episode of <series>. -**twitch**: Command has no documentation. +**twitch (twitchtv):** <channel name> -- Retrieves the channel and shows it's offline/offline status -**twitter (tw, twatter):** twitter <user> [n] -- Gets last/[n]th tweet from <user> +**twitter (tw, twatter):** twitter <user> <n> -- Gets last/<n>th tweet from <user> **twuser (twinfo):** twuser <user> -- Get info on the Twitter user <user> -**ugroups**: [user] - lists all permissions given to [user], or the caller if no user is specified +**ugroups**: <user> - lists all permissions given to <user>, or the caller if no user is specified -**unban**: [channel] <user> - unbans <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) +**unban**: <channel> <user> - unbans <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) -**unescape**: unescape <string> -- Unicode unescapes <string>. +**unescape**: <string> -- Unicode unescapes <string>. **unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore) -**unlock**: [channel] - unlocks [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_lock, op) +**unlock**: <channel> - unlocks <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_lock, op) -**unmute**: [channel] - unmutes [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_mute, op) +**unmute**: <channel> - unmutes <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_mute, op) -**unquiet**: [channel] <user> - unquiets <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_quiet, op) +**unquiet**: <channel> <user> - unquiets <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_quiet, op) -**uperms**: [user] - lists all permissions given to [user], or the caller if no user is specified +**uperms**: <user> - lists all permissions given to <user>, or the caller if no user is specified -**upper**: upper <string> -- Convert string to uppercase. +**upper**: <string> -- Convert string to uppercase. -**urban (u):** urban <phrase> [id] -- Looks up <phrase> on urbandictionary.com. +**urban (u):** urban <phrase> <id> -- Looks up <phrase> on urbandictionary.com. **usa**: <text> -- Makes <text> more patriotic. -**validate (w3c):** validate <url> -- Runs url through the w3c markup validator. +**validate (w3c):** validate <url> -- Runs url through the W3C Markup Validator. + +**voat**: <subverse> <n> - gets a random post from <subverse>, or gets the <n>th post in the subverse -**voice**: [channel] <user> - voices <user> in [channel], or in the caller's channel if no channel is specified ( *Permission required:* op_voice, op) +**voice**: <channel> <user> - voices <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_voice, op) **vote**: .vote <poll> <choice> - Vote on a poll; responds on error and silently records on success. -**weather (we):** weather <location> [dontsave] -- Gets weather data +**weather (we):** weather <location> -- Gets weather data for <location>. **whois**: <domain> -- Does a whois query on <domain>. -**wiki (w, wikipedia):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. +**wiki (wikipedia, w):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. **wisdom**: words of wisdom from various bathroom stalls. **wnba**: wnba <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**wolframalpha (math, ca, calc, wa, convert):** w<query> -- Computes <query> using Wolfram Alpha. +**wolframalpha (ca, math, wa, calc, convert):** <query> -- Computes <query> using Wolfram Alpha. **word (wordoftheday):** returns the word of the day. To see past word of the day enter use the format yyyy-MM-dd. The specified date must be after 2009-08-10. @@ -464,9 +686,7 @@ gonzobot Command list **wordusage (usage, wordexample):** <word> -- Returns an example sentence showing the usage of <word>. -**wouldyou**: Asks a would you rather question - -**wpass (wordpassword, wordpass):** [length] - generates an easy to remember password with [length] (default 4) commonly used words +**wpass (wordpass, wordpassword):** <length> - generates an easy to remember password with <length> (default 4) commonly used words **wrainbow**: <text> -- Gives each word in <text> rainbow colors. @@ -478,7 +698,7 @@ gonzobot Command list **youtime (ytime):** youtime <query> -- Gets the total run time of the first YouTube search result for <query>. -**youtube (y, yt, you):** youtube <query> -- Returns the first YouTube search result for <query>. +**youtube (yt, y, you):** youtube <query> -- Returns the first YouTube search result for <query>. **zombs**: prints some fucked up shit. From 93138270299a8a289cc5fc870326be9ffc28a2a0 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 22 Jun 2017 15:19:44 -0400 Subject: [PATCH 53/87] added another kero gem. --- plugins/jokes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/jokes.py b/plugins/jokes.py index 6f0d6a2a8..90e170533 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -125,7 +125,7 @@ def triforce(message): @hook.command("kero", "kerowhack") def kero(text, message): """Returns the text input the way kerouac5 would say it.""" - saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird.", "JUGGALOS COME GET YOUR FREE QUINOA WITH RANCH", "well then you have a bastardized shitty version of something good"] + saying = ["PRIUS JIMMY BUFFET!!!", "DISNEY APPLE BEARDS, FUCK COFFEE!", "FUCK THINGS THAT ARE GOOD AND NICE!", "RED ZONE SCHMED ZONE!", "i DONT USE APPLE CPMPUTERS!!!!", "???!??!? YOU CLEARLY DONT LISTEN!", "WHY ARE PEOPLE CALLING ME A NERD I WAS ON THE iPHONE AND DONT GET IT!!!!", "OH MAN FUCK BEARDS!", "I AM GOING DOWN THE HALL TO A MEETING UNDER MY OWN POWER RIGHT NOW!!!", "NOT A VEGETABLE!!!!!!!", "i think thats a vulva euphemism, PW.", "THEY START SHOVING CAKES IN EACH OTHERS FACES LIKE ITS A MANATEE WEDDING HOLY SHIT!", "I DONT MAKE THE NEWS I JUST REPORT IT!", "HURR DURR YOU ARE OLD WITH PRINTED PAGES", "pants on head mouthbreather.", "HELLO I AM BACK WHAT IS NEW?", "YOU ARE A HORRIBLE DEAD FAN!", "i try not to be racist, but seriously. there's a mexican guy in our neighborhood. on the 4th like 40 people in his family came over and shot off fireworks and they sat in lawn chairs in the front yard.", "there's an old asian woman in our neighborhood who hides in her house and walks 10 feet behind her husband and is a bad driver.", "HOW AM I NOT SUPPOSED TO BE RACIST WITH THAT OVERWHELMING EVIDENCE EXACTLY!?!?", "???? WTF IS", "NO I NEVER THINK THAT I AM VERY HAPPY", "HORSES CANT TALK IDIOTS", "I WENT TO ZERO STRIP CLUBS AND HAD ZERO STREET BEER", "I FUCKING WRITE CURRICULUM ON HOW TO SELL AND NETWORK AND RUN A BUSINESS ALL FUCKING DAY LONG", "you gentlemen are hilarious. theres certainly nothing in what you're doing that could be considered \"ball busting\" or \"trolling.\"", "YOU CAN EMAIL FROM YOUR PHONE? MAGIC MAN FROM THE FUTURE, DO THEY HAVE RUBBER VAGINAS MEN CAN PUT THEIR DICKS INTO AS WELL?", "really who the fuck cares who the third president was?", "why dont you just bore your candidat to tears with talk about subarus and guns and talk about the recruiters that have been calling *you*? Itll be just like irc.", "DONT TAKE AWAY MY FUN.", "I may beat off on the notes afterward because that turns me on, DONT JUDGE ME ITS NORMAL.", "wtf is a homeless guyy gonna do with a speaker SURE WOULD LIKE TO EAT BUT AT LEAST I HAVE MY KOOL JAMZ", "thanks for overexplaining that one", "Really. I say ejaculating on pictures is weird and somehow that translates to OMG WAT A PRUDE", "Had someone ejaculate on a picture of me. Gotta try it once.", "apparently theres a thing where people ejaculate on pictures i bet you could monetize that.", "'Hey you can talk to this chick and maybe get laid or cum on a picture,' only complete social retards pick the latter.", "Hahaha those weirdos with tentacle porn excuse me I need to whack it on a picture and put it on the Internet.", "enjoy your penis salad sandwich", "im pretty sure ive never said 'OH MY GOODNESS LOOK AT HIS PENIS I WISH I HAD THAT PENIS' then went searching for it to show someone else 24 hours later because i couldn't stop thinking about teddy bridgewater's beautiful penis <3", "i don't think \"we\" have ever \"talked a lot of dick.\"", "OMG DID YOU SEE THE BALLS TOO?", "be as weird as you want. i dont understand why its so cool now to go \"OOOO THATS JUST WHO HE IS DONT JUDGE.\" if you like to have your balls hit with a hammer while you ejaculate onto pictures of horses i think you should be called fucking weird.", "JUGGALOS COME GET YOUR FREE QUINOA WITH RANCH", "well then you have a bastardized shitty version of something good", "OH YOU DONT LIKE IT? LOOK TO YOUR LEFT. NOW YOUR RIGHT. THATS WHOS GOING TO BE FUCKING YOUR MAN IF YOU DONT WORK NOW", "WAIT WAIT WTF, SOMEONE NEEDS TO EXPLAIN THIS SHIT TO ME RIGHT THE FUCK NOW. WHY AM I SEEING SIDEBAR ADDS FOR CHICKEN KEEPING ON FACEBOOK? I NEVER SEARCHED IT. I NEVER EMAILED ABOUT IT. NEVER LOOKED ANYWHERE FOR IT. WHAT THE SHIT?"] keror = random.choice(saying).upper() if keror == "???? WTF IS": out = keror + " " + text.upper() From 55d24be9189370d9fba04237ce6ab2d3ae11d9aa Mon Sep 17 00:00:00 2001 From: A_D Date: Wed, 12 Jul 2017 22:57:23 +0200 Subject: [PATCH 54/87] made sending a tell to rdv or or shane respond with the same message --- plugins/tell.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tell.py b/plugins/tell.py index 6ec6de4c5..61efd8725 100644 --- a/plugins/tell.py +++ b/plugins/tell.py @@ -149,7 +149,7 @@ def tell_cmd(text, nick, db, notice, conn): query = text.split(' ', 1) if query[0].lower() == "paradox": return "Paradox doesn't want to hear from me. Just send him a fucking message." - if query[0].lower() == "rdv": + if query[0].lower() in ["rdv", "shane"]: return "rdv doesn't want to hear from me, if you need something done please ask in #help." if len(query) != 2: prefix = conn.config("command_prefix") From c5a55c28653f6c4520c568dca613f1f4ed642466 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 27 Jul 2017 11:54:33 -0400 Subject: [PATCH 55/87] add #pufftown to optout for grabs. --- plugins/grab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/grab.py b/plugins/grab.py index 84a85819d..de0bdf0e8 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -8,7 +8,7 @@ search_pages = defaultdict(list) search_page_indexes = {} -opt_out = ['#anxiety', '#writingprompts', '#drama'] +opt_out = ['#anxiety', '#writingprompts', '#drama', '#pufftown'] table = Table( 'grab', From 3945725725141f4771cfa5b18ed60d0f037c50f8 Mon Sep 17 00:00:00 2001 From: A_D Date: Fri, 28 Jul 2017 19:17:32 +0000 Subject: [PATCH 56/87] Added #portland to the list of optin channels --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index 405797f81..3f1140dc7 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#portland'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From d349027e690df053668fefa2e189447e448af719 Mon Sep 17 00:00:00 2001 From: A_D Date: Thu, 3 Aug 2017 14:06:23 +0000 Subject: [PATCH 57/87] Added #sweden to the herald command opt out --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 284b2b230..a6bc54fdf 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -6,7 +6,7 @@ import random db_ready = [] -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1'] +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden'] delay = 10 floodcheck = {} From ddc8e6a18e23d8227bb57914ac91ea644e8b6046 Mon Sep 17 00:00:00 2001 From: A_D Date: Thu, 3 Aug 2017 14:08:02 +0000 Subject: [PATCH 58/87] Added #trackers to opt out at the request of Ketchup901 --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index a6bc54fdf..b931a837d 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -6,7 +6,7 @@ import random db_ready = [] -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden'] +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers'] delay = 10 floodcheck = {} From 84558f1c63400e40ab3f45e30be269aa30fb4254 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 23 Aug 2017 23:46:00 -0400 Subject: [PATCH 59/87] opt out link_announcer for a channel. I can't even remember which one. --- plugins/link_announcer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 9f5e6dede..f5ad44324 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -8,7 +8,7 @@ blacklist = '.*(reddit\.com|redd\.it|youtube\.com|youtu\.be|imdb\.com|spotify\.com|twitter\.com|twitch\.tv|amazon\.co|xkcd\.com|amzn\.co|steamcommunity\.com|steampowered\.com|newegg\.com|soundcloud\.com|vimeo\.com).*' url_re = re.compile('(?!{})http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'.format(blacklist), re.I) -opt_out = ["#yogscast", "#mturk", "#europa", "#toolbox"] +opt_out = ["#yogscast", "#mturk", "#europa", "#toolbox", "#cryptos"] traditional = [ (1024 ** 5, 'PB'), From 836870366d42892e85c5aec91d3442160f280d6a Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 23 Aug 2017 23:49:35 -0400 Subject: [PATCH 60/87] give people the penis they want and desearve. --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index 405797f81..acb722ade 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 7f022307864632da3e256ef874d87b7f2d37ea0c Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 26 Sep 2017 14:14:16 -0400 Subject: [PATCH 61/87] add .penis to #psychiccheeto --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index 9af93114c..4dd0c99ba 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 98fd961ce5e64ee4ad322788b03f15b0841eee61 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 6 Oct 2017 15:26:46 -0400 Subject: [PATCH 62/87] enable .penis for #metalgigsscotland and #psychicart --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index 4dd0c99ba..f7211315d 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 64979d741dfcd50f8f85eb2a1c98d90a99396bde Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Fri, 6 Oct 2017 15:38:25 -0400 Subject: [PATCH 63/87] add .penis to ##prolesftw --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index f7211315d..f23bbbe86 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 66b63b1f6badfdb64a981a73676419db99491a8a Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Sun, 8 Oct 2017 10:58:40 -0400 Subject: [PATCH 64/87] add #duckfuck to .penis. --- plugins/penis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/penis.py b/plugins/penis.py index f23bbbe86..0c5d9ac40 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 4ec613000ee492dc327398d826093b7dcab05503 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 10 Oct 2017 11:05:25 -0400 Subject: [PATCH 65/87] some change to correction.py that I forgot to commit before and am too lazy to do git diff on. --- plugins/correction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/correction.py b/plugins/correction.py index f181e7633..4839262c1 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -8,7 +8,7 @@ # define channels that want this plugin disabled. -opt_out = ['#linuxmasterrace'] +opt_out = [] def shorten_msg(msg): out = (msg[:500]) if len(msg) > 500 else msg From 725ead139374bd0c96be7e7e91c604687cc9c222 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 10 Oct 2017 12:24:57 -0400 Subject: [PATCH 66/87] fix merge conflicts you forgot to fix dumbass. --- plugins/attacks.py | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index a74225ad7..0a4565f72 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -57,11 +57,7 @@ def load_attacks(bot): @asyncio.coroutine @hook.command -<<<<<<< HEAD -def lart(text, conn, chan, nick, action): -======= def lart(text, conn, nick, action, is_nick_valid): ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb """ - LARTs """ target = text.strip() # do not activate command for channels that opt out. @@ -83,11 +79,7 @@ def lart(text, conn, nick, action, is_nick_valid): @asyncio.coroutine @hook.command("flirt", "sexup", "jackmeoff") -<<<<<<< HEAD -def flirt(text, conn, nick, chan, message): -======= def flirt(text, conn, nick, message, is_nick_valid): ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb """ - flirts with """ target = text.strip() if chan in opt_out: @@ -105,11 +97,7 @@ def flirt(text, conn, nick, message, is_nick_valid): @asyncio.coroutine @hook.command("kill", "end") -<<<<<<< HEAD -def kill(text, conn, nick, action, chan): -======= def kill(text, conn, nick, action, is_nick_valid): ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb """ - kills """ target = text.strip() if chan in opt_out: @@ -130,11 +118,7 @@ def kill(text, conn, nick, action, is_nick_valid): @asyncio.coroutine @hook.command -<<<<<<< HEAD -def slap(text, action, nick, chan, conn): -======= def slap(text, action, nick, conn, is_nick_valid): ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb """ -- Makes the bot slap .""" target = text.strip() if chan in opt_out: @@ -205,24 +189,16 @@ def strax(text, conn, message, nick, is_nick_valid): @hook.command(autohelp=False) def nk(chan, message): """outputs a random North Korea propoganda slogan""" -<<<<<<< HEAD if chan in opt_out: return - index = random.randint(0,len(north_korea)-1) -======= index = random.randint(0, len(north_korea) - 1) ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb slogan = north_korea[index] message(slogan, chan) @asyncio.coroutine @hook.command() -<<<<<<< HEAD -def insult(text, conn, nick, chan, notice, message): -======= def insult(text, conn, nick, notice, message, is_nick_valid): ->>>>>>> 4c53fc2bd502d2365ba5dc08b64f0d7821712acb """ - insults :type text: str :type conn: cloudbot.client.Client From 2ad3300a3efb1ea76aa23aa8d99095c81a5bb565 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 10 Oct 2017 12:29:04 -0400 Subject: [PATCH 67/87] chan parameter got wiped in merge. added chan so channels can opt out of commands. --- plugins/attacks.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 0a4565f72..79e5fbca7 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -4,7 +4,7 @@ import os import random import re - + from cloudbot import hook from cloudbot.util import textgen @@ -57,7 +57,7 @@ def load_attacks(bot): @asyncio.coroutine @hook.command -def lart(text, conn, nick, action, is_nick_valid): +def lart(text, chan, conn, nick, action, is_nick_valid): """ - LARTs """ target = text.strip() # do not activate command for channels that opt out. @@ -79,7 +79,7 @@ def lart(text, conn, nick, action, is_nick_valid): @asyncio.coroutine @hook.command("flirt", "sexup", "jackmeoff") -def flirt(text, conn, nick, message, is_nick_valid): +def flirt(text, chan, conn, nick, message, is_nick_valid): """ - flirts with """ target = text.strip() if chan in opt_out: @@ -97,7 +97,7 @@ def flirt(text, conn, nick, message, is_nick_valid): @asyncio.coroutine @hook.command("kill", "end") -def kill(text, conn, nick, action, is_nick_valid): +def kill(text, chan, conn, nick, action, is_nick_valid): """ - kills """ target = text.strip() if chan in opt_out: @@ -118,7 +118,7 @@ def kill(text, conn, nick, action, is_nick_valid): @asyncio.coroutine @hook.command -def slap(text, action, nick, conn, is_nick_valid): +def slap(text, chan, action, nick, conn, is_nick_valid): """ -- Makes the bot slap .""" target = text.strip() if chan in opt_out: @@ -198,7 +198,7 @@ def nk(chan, message): @asyncio.coroutine @hook.command() -def insult(text, conn, nick, notice, message, is_nick_valid): +def insult(text, chan, conn, nick, notice, message, is_nick_valid): """ - insults :type text: str :type conn: cloudbot.client.Client From 831370873829b0ce5109c49b2ff6c2fffbfd68fa Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 17 Oct 2017 13:51:53 -0400 Subject: [PATCH 68/87] add penis to #textfriends, remove heralds from #talk --- plugins/herald.py | 2 +- plugins/penis.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/herald.py b/plugins/herald.py index b931a837d..253603d12 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -6,7 +6,7 @@ import random db_ready = [] -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers'] +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers', '#talk'] delay = 10 floodcheck = {} diff --git a/plugins/penis.py b/plugins/penis.py index 0c5d9ac40..41f2c3812 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck', '#textfriends'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From c6979f82f7109d48f3fc7182968a0aa405fbc8ec Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 25 Oct 2017 08:59:35 -0400 Subject: [PATCH 69/87] turn off herald for some channel. --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 253603d12..5825bd4e0 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -6,7 +6,7 @@ import random db_ready = [] -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers', '#talk'] +opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers', '#talk', '#britishpolitics'] delay = 10 floodcheck = {} From 0eb936eeb481990cf869c30d869df45731e7ef1f Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 25 Oct 2017 11:04:08 -0400 Subject: [PATCH 70/87] really fix the merge error this time. --- plugins/attacks.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 7e67990e8..492257f9c 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -1,28 +1,15 @@ import json import re -<<<<<<< HEAD - -======= from collections import defaultdict from enum import Enum, unique from pathlib import Path ->>>>>>> 97d585d958827306f951f252fecec2f854501e1d from cloudbot import hook from cloudbot.util import textgen opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#linuxmasterrace', '#bipolar'] -import json -import re -from collections import defaultdict -from enum import Enum, unique -from pathlib import Path - -from cloudbot import hook -from cloudbot.util import textgen - @unique class RespType(Enum): From 70614fb88f2c8930661263a7486ee35d813fd689 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Wed, 15 Nov 2017 17:54:13 -0500 Subject: [PATCH 71/87] I dunno what was changed just syncing up the gitlab repo. --- plugins/bing.py | 4 ---- plugins/history.py | 2 -- plugins/karma.py | 4 ---- plugins/penis.py | 2 +- 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/plugins/bing.py b/plugins/bing.py index f4e01f44a..9a44c86c7 100644 --- a/plugins/bing.py +++ b/plugins/bing.py @@ -123,9 +123,5 @@ def bingimage(text, bot, chan): # join all the tags together in a comma separated string ("tag1, tag2, tag3") tag_text = ", ".join(tags) -<<<<<<< HEAD - return '\x02Notice: The Bing API will stop working sometime in december because Microsoft is greedy as fuck and is removing the free search tier.\x02 {} ({})'.format(unescape(result["MediaUrl"]), tag_text) -======= return '\x02Notice: The Bing API will stop working sometime soon because Microsoft is greedy as fuck and is removing the free search tier.\x02 {} ({})'.format(unescape(result["MediaUrl"]), tag_text) ->>>>>>> 15af7ef71d3cd306bd5282a7bcdcd6e7bf1a964b diff --git a/plugins/history.py b/plugins/history.py index 757639829..25835d044 100644 --- a/plugins/history.py +++ b/plugins/history.py @@ -89,8 +89,6 @@ def seen(text, nick, chan, db, event): :type event: cloudbot.event.Event :type conn: cloudbot.client.Client """ - if chan in opt_out: - return if event.conn.nick.lower() == text.lower(): return "You need to get your eyes checked." diff --git a/plugins/karma.py b/plugins/karma.py index fbeb603ef..76f93e0df 100644 --- a/plugins/karma.py +++ b/plugins/karma.py @@ -26,8 +26,6 @@ def addpoint(text, nick, chan, db, conn): """ - adds a point to the """ - if chan in opt_out: - return text = text.strip() karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name': nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: @@ -57,8 +55,6 @@ def re_addpt(match, nick, chan, db, conn, notice): def rmpoint(text, nick, chan, db, conn): """ - subtracts a point from the """ - if chan in opt_out: - return text = text.strip() karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name': nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: diff --git a/plugins/penis.py b/plugins/penis.py index 41f2c3812..8bdd2488b 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,7 +7,7 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck', '#textfriends'] +optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck', '#textfriends', '#nightaudit'] @hook.command("penis", "bepis", autohelp=False) def penis(text, message, chan, notice, nick): From 21da481a5b2d34197edcd890e901cd95961d217b Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Wed, 15 Nov 2017 22:19:02 -0600 Subject: [PATCH 72/87] Remove channels from opt out lists that have migrated to new system --- plugins/attacks.py | 2 +- plugins/chatbot.py | 2 +- plugins/herald.py | 2 +- plugins/weather.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 3d4a3bd12..e752e4108 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -8,7 +8,7 @@ from cloudbot.util import textgen -opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#linuxmasterrace', '#bipolar'] +opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#bipolar'] @unique diff --git a/plugins/chatbot.py b/plugins/chatbot.py index 2413681b4..54d6c8288 100644 --- a/plugins/chatbot.py +++ b/plugins/chatbot.py @@ -2,7 +2,7 @@ from cloudbot import hook # Define channels that have opted out of this command. -opt_out = ['#linuxmasterrace'] +opt_out = [] @hook.on_start() def get_key(bot): diff --git a/plugins/herald.py b/plugins/herald.py index 348128668..a1ffde0a1 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -8,7 +8,7 @@ from cloudbot.util import database -opt_out = ['#modtalk', '#casualconversation', '#anxiety', '#reddit', '#snoonet', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#linuxmasterrace', '#gonzobot', '#f1', '#sweden', '#trackers', '#talk', '#britishpolitics'] +opt_out = ['#modtalk', '#anxiety', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] delay = 10 floodcheck = {} diff --git a/plugins/weather.py b/plugins/weather.py index 7b364e707..c175cae77 100644 --- a/plugins/weather.py +++ b/plugins/weather.py @@ -25,7 +25,7 @@ class APIError(Exception): wunder_api = "http://api.wunderground.com/api/{}/forecast/geolookup/conditions/q/{}.json" # Define channels that have opted out of this command. -opt_out = ["#linuxmasterrace"] +opt_out = [] # Change this to a ccTLD code (eg. uk, nz) to make results more targeted towards that specific country. From 35dcd0db21ea32bd8e69108e3e5e40a73b879182 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Thu, 16 Nov 2017 17:58:03 -0600 Subject: [PATCH 73/87] Remove empty optouts --- plugins/chatbot.py | 7 +------ plugins/correction.py | 5 ----- plugins/weather.py | 8 +------- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/plugins/chatbot.py b/plugins/chatbot.py index 54d6c8288..ab54fd8bd 100644 --- a/plugins/chatbot.py +++ b/plugins/chatbot.py @@ -1,9 +1,6 @@ from cleverwrap import CleverWrap from cloudbot import hook -# Define channels that have opted out of this command. -opt_out = [] - @hook.on_start() def get_key(bot): global api_key, cb @@ -11,10 +8,8 @@ def get_key(bot): cb = CleverWrap(api_key) @hook.command("ask", "gonzo", "gonzobot", "cleverbot", "cb") -def chitchat(text, chan): +def chitchat(text): """chat with cleverbot.com""" - if chan in opt_out: - return if not api_key: return "Please add an API key from http://www.cleverbot.com/api to enable this feature." return cb.say(text) diff --git a/plugins/correction.py b/plugins/correction.py index 691ff7742..be8fd0cb4 100644 --- a/plugins/correction.py +++ b/plugins/correction.py @@ -6,9 +6,6 @@ correction_re = re.compile(r"^[sS]/(.*/.*(?:/[igx]{,4})?)\S*$") -# define channels that want this plugin disabled. - -opt_out = [] def shorten_msg(msg): out = (msg[:500]) if len(msg) > 500 else msg @@ -20,8 +17,6 @@ def correction(match, conn, nick, chan, message): :type conn: cloudbot.client.Client :type chan: str """ - if chan in opt_out: - return groups = [b.replace("\/", "/") for b in re.split(r"(? bias = None @@ -109,14 +105,12 @@ def get_location(nick): return location @hook.command("weather", "we", autohelp=False) -def weather(text, reply, db, nick, chan, notice): +def weather(text, reply, db, nick, notice): """weather -- Gets weather data for .""" if not wunder_key: return "This command requires a Weather Underground API key." if not dev_key: return "This command requires a Google Developers Console API key." - if chan in opt_out: - return location = "" # If no input try the db From 24ef8bd484dd3bbbe4b2364376560ab161a2880e Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Thu, 16 Nov 2017 18:00:05 -0600 Subject: [PATCH 74/87] Remove #sandersforpresident optouts since the channel is dead --- plugins/attacks.py | 2 +- plugins/bing.py | 2 +- plugins/giphy.py | 2 +- plugins/google_cse.py | 2 +- plugins/wyr.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index e752e4108..7b3b51506 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -8,7 +8,7 @@ from cloudbot.util import textgen -opt_out = ['#anxiety', '#math', '#sandersforpresident', '#drama', '#bipolar'] +opt_out = ['#anxiety', '#math', '#drama', '#bipolar'] @unique diff --git a/plugins/bing.py b/plugins/bing.py index 9a44c86c7..8b34bb08d 100644 --- a/plugins/bing.py +++ b/plugins/bing.py @@ -16,7 +16,7 @@ # the default config just sets the filter to Moderate for all queries DEFAULT_FILTER = "Moderate" NSFW_FILTER = "Off" -opt_out = ['#sandersforpresident', '#foreveralone'] +opt_out = ['#foreveralone'] def unescape(s): if not s.strip(): diff --git a/plugins/giphy.py b/plugins/giphy.py index e995ed8f5..ec66010f6 100644 --- a/plugins/giphy.py +++ b/plugins/giphy.py @@ -5,7 +5,7 @@ api_url = 'http://api.giphy.com/v1/gifs' -opt_out = ["#sandersforpresident"] +opt_out = [] @hook.on_start() def load_api(bot): diff --git a/plugins/google_cse.py b/plugins/google_cse.py index 901f58bc5..3ea1e7cbf 100644 --- a/plugins/google_cse.py +++ b/plugins/google_cse.py @@ -20,7 +20,7 @@ API_CS = 'https://www.googleapis.com/customsearch/v1' -opt_out = ["#sandersforpresident"] +opt_out = [] @hook.on_start() def load_api(bot): diff --git a/plugins/wyr.py b/plugins/wyr.py index 6eada4ada..6b3188589 100644 --- a/plugins/wyr.py +++ b/plugins/wyr.py @@ -21,7 +21,7 @@ API_URL = "http://www.rrrather.com/botapi" FILTERED_TAGS = () -opt_out = ['#anxiety', '#sandersforpresident'] +opt_out = ['#anxiety'] def get_wyr(headers): """ Gets a entry from the RRRather API and cleans up the data """ From a44cff5b7772b11b6e015b52b398dd571c818e33 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sat, 18 Nov 2017 03:45:36 -0600 Subject: [PATCH 75/87] Remove more empty optouts --- plugins/giphy.py | 4 ---- plugins/google_cse.py | 3 --- 2 files changed, 7 deletions(-) diff --git a/plugins/giphy.py b/plugins/giphy.py index ec66010f6..21e5e4df8 100644 --- a/plugins/giphy.py +++ b/plugins/giphy.py @@ -5,8 +5,6 @@ api_url = 'http://api.giphy.com/v1/gifs' -opt_out = [] - @hook.on_start() def load_api(bot): """Loads the API key. Check here for the public api key: https://github.com/Giphy/GiphyAPI""" @@ -16,8 +14,6 @@ def load_api(bot): @hook.command("gif", "giphy") def giphy(text, chan): """Searches giphy.com for a gif using the provided search term.""" - if chan in opt_out: - return term = text.strip() search_url = api_url + '/search' params = { diff --git a/plugins/google_cse.py b/plugins/google_cse.py index 3ea1e7cbf..5e486faf8 100644 --- a/plugins/google_cse.py +++ b/plugins/google_cse.py @@ -20,7 +20,6 @@ API_CS = 'https://www.googleapis.com/customsearch/v1' -opt_out = [] @hook.on_start() def load_api(bot): @@ -58,8 +57,6 @@ def gse(text): @hook.command('gseis', 'image') def gse_gis(text): """ -- Returns first Google Images result for .""" - if chan in opt_out: - return if not dev_key: return "This command requires a Google Developers Console API key." if not cx: From 187589a0935c7a8f5c874860ce5c1ea236ed7fd0 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 21 Nov 2017 14:42:44 -0500 Subject: [PATCH 76/87] send hook errors to ##gonzobot --- plugins/core/chan_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/core/chan_log.py b/plugins/core/chan_log.py index 041a7c893..d8994a1c5 100644 --- a/plugins/core/chan_log.py +++ b/plugins/core/chan_log.py @@ -3,7 +3,7 @@ from cloudbot import hook from cloudbot.util import web -logchannel = "" +logchannel = "##gonzobot" @hook.post_hook From 469d659f30a1c25ee4d3bb001a9357516bb7527b Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 21 Nov 2017 16:04:44 -0500 Subject: [PATCH 77/87] rename reactionmacros.json to reaction_macros.json --- data/reaction_macros.json | 78 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 data/reaction_macros.json diff --git a/data/reaction_macros.json b/data/reaction_macros.json new file mode 100644 index 000000000..2e5e5aa1f --- /dev/null +++ b/data/reaction_macros.json @@ -0,0 +1,78 @@ +{ + "deal_with_it_macros": [ + "https://i.imgur.com/WhgY2sX.gif", + "https://i.imgur.com/eGInc.jpg", + "https://i.imgur.com/KA3XSt5.gif", + "https://i.imgur.com/rsuXB69.gif", + "https://i.imgur.com/fFXmuSS.jpg", + "https://j.gifs.com/L9mmYr.gif", + "https://i.imgur.com/nxMBqb4.gif", + "https://i.imgur.com/LZFE3y1.gif", + "https://i.imgur.com/cky1KZB.gif", + "https://i.imgur.com/ubPvLt4.jpg", + "https://i.imgur.com/xMlks5p.jpg", + "https://i.imgur.com/Awqpq.gif", + "http://nerdist.com/wp-content/uploads/2016/04/Thanks-Obama-2.gif" + ], + "facepalm_macros": [ + "https://i.imgur.com/iWKad22r.jpg", + "https://i.imgur.com/3Jauxrw.jpg", + "https://i.imgur.com/kFyKOgj.gif", + "https://i.imgur.com/5JaFlhU.jpg?1", + "https://i.imgur.com/qbnNXWy.gif", + "https://i.imgur.com/h46ycmx.png", + "https://i.imgur.com/gPNQzaf.jpg", + "https://i.imgur.com/9I8A9C5.jpg", + "https://i.imgur.com/pSVD0jZ.jpg", + "https://i.imgur.com/2kX7tdb.jpg", + "https://i.imgur.com/R7ZPh.png", + "https://i.imgur.com/8p2VGIY.jpg", + "https://i.imgur.com/8VYMSq8.gif", + "https://i.imgur.com/WVn7B8O.jpg", + "https://i.imgur.com/GTxRRuv.gif" + ], + "head_desk_macros": [ + "https://i.imgur.com/Pg9nt.gif", + "https://baudattitude.files.wordpress.com/2012/02/twilightsparkleheaddesk.gif", + "https://i.imgur.com/LFzzTd8.gif", + "https://i.imgur.com/DS0uEfv.jpg", + "https://i.imgur.com/31ZJ2mT.jpg", + "https://68.media.tumblr.com/20a0fe049b41d2be7562d19543fc9bf2/tumblr_inline_mq00ylPF1l1qz4rgp.gif", + "https://i.imgur.com/RW2NAcQ.jpg", + "https://i.imgur.com/1bmcUnj.gif", + "https://i.imgur.com/r43WCSK.gif", + "http://img.photobucket.com/albums/v642/StarRose/GIFS/headdesk.gif" + ], + "fetish_macros": [ + "https://i.imgur.com/FFy1IEg.jpg", + "https://i.imgur.com/RspJyHy.gif", + "https://i.imgur.com/J6EB8vs.gif", + "https://imgur.com/LoYBEhZ", + "https://i.imgur.com/bn2pnT6.gif", + "https://i.imgur.com/MfZydOB.gif", + "https://i.imgur.com/8N3DmQ6.gif", + "https://imgur.com/veDLZc6", + "https://i.imgur.com/jRTllgX.gif", + "https://i.imgur.com/r9187c5.gif", + "https://i.imgur.com/HUW0L1q.jpg", + "https://i.imgur.com/rDhDhIU.gif", + "https://i.imgur.com/QYypuG1.gif", + "https://i.imgur.com/SE0Wzjx.gif", + "https://i.imgur.com/SUNo8wV.gif", + "https://i.imgur.com/xcruehZ.gif", + "https://i.imgur.com/dTtAQyI.gif", + "https://i.imgur.com/DIK7Tpb.gif", + "https://i.imgur.com/uDlBc7X.gif", + "https://i.imgur.com/dIy5gdd.gif", + "https://i.imgur.com/9TGDK39.jpg", + "https://i.imgur.com/fSiBZOj.gif", + "https://i.imgur.com/f5JMDGK.jpg", + "https://i.imgur.com/Wy2URSw.gif", + "https://i.imgur.com/CVfuIwe.jpg", + "https://i.imgur.com/3xKiDnC.gif", + "https://i.imgur.com/WDszWfj.gif", + "https://i.imgur.com/1DRvg1V.gif", + "https://i.imgur.com/WK723Wk.jpg", + "https://i.imgur.com/DJiaI7L.png" + ] +} From e0a9eccff95393eedc76ea14fd46d86c51f232a8 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Tue, 21 Nov 2017 16:10:57 -0500 Subject: [PATCH 78/87] update commands.md --- docs/user/commands.md | 264 +++++++++++++++++++++++++++--------------- 1 file changed, 169 insertions(+), 95 deletions(-) diff --git a/docs/user/commands.md b/docs/user/commands.md index 7ac388621..be2e43929 100644 --- a/docs/user/commands.md +++ b/docs/user/commands.md @@ -14,9 +14,9 @@ gonzobot Command list **antonym**: <word> -- Returns a list of antonyms for <word>. -**ask (gonzo, gonzobot, cb, cleverbot):** chat with cleverbot.com +**ask (gonzobot, cb, gonzo, cleverbot):** chat with cleverbot.com -**awesome (cool, iscool):** Prints a webpage to show <nick> how awesome they are. +**awesome (cool, iscool):** - Prints a webpage to show <nick> how awesome they are. **ban**: <channel> <user> - bans <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_ban, op) @@ -30,31 +30,45 @@ gonzobot Command list **base64**: <string> -- Encode <string> with base64. +**bdsm (dominate):** <user> - Just a little bit of kinky fun. + **beats**: -- Gets the current time in .beats (Swatch Internet Time). -**beer**: <user> - give beer to <user> +**beer**: <user> - gives beer to <user> **befriend**: when there is a duck on the loose use this command to befriend it before someone else shoots it. **bible (passage):** Prints the specified passage from the Bible +**bing (b):** <query> - returns the first bing search result for <query> + +**bingimage (bis):** <query> - returns the first bing image search result for <query> + **bitcoin (btc):** -- Returns current bitcoin value -**bite**: bites the specified nick somewhere random. +**bite**: <user> - bites <user> -**boobs (boobies):** prints boobies! +**boobs (boobies):** - prints boobies! -**bookpun**: Suggests a pun of a book title/author. +**bookpun**: - Suggests a pun of a book title/author. **books (gbooks):** books <query> -- Searches Google Books for <query>. -**bottomten (hated, pointsbottom):** .bottomten or .pointsbottom prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. +**bottomten (hated, pointsbottom):** - prints the top 10 things with the lowest points in the channel. To see the bottom 10 items in all of the channels the bot sits in use .bottomten global. **brainfuck (bf):** <prog> - executes <prog> as Brainfuck code -**brekky (brekkie):** <user> - give brekkie to <user> +**brekkie (brekky):** <user> - gives brekkie to <user> + +**brew**: <query> - returns the first brewerydb search result for <query> + +**burger**: <user> - gives a tasty burger to <user> -**cake**: <user> - gives <user> an awesome cake +**cah**: Submit text to be used as a CAH whitecard + +**cahb**: Submit text with _ for the bot to fill in the rest. You can submit text with multiple _ + +**cake**: <user> - gives a cake to <user> **cakeday**: cakeday <reddituser> will return the cakeday for the given reddit username. @@ -64,41 +78,47 @@ gonzobot Command list **cats**: gets a fucking fact about cats. -**cereal**: <user> - give cereal to <user> +**cereal**: <user> - gives cereal to <user> **changetopic (question, discuss):** generates a random question to help start a conversation or change a topic -**cheese**: <user> - give cheese to <user> +**cheese**: <user> - gives cheese to <user> -**chicken**: <user> - give chicken to <user> +**chicken**: <user> - gives chicken to <user> -**chocolate**: <user> - give chocolate to <user> +**chocolate**: <user> - gives chocolate to <user> **choose**: <choice1>, <choice2>, <choice3>, etc. - randomly picks one of the given choices -**clinton**: clinton a user. +**clearoptout**: <channel> - Clears the optout list for a channel. Specify "global" to clear all data for this network + +**clinton**: <user> - Clinton a <user> -**coffee**: <user> - give coffee to <user> +**cmdinfo**: <command> - Gets various information about a command + +**coffee**: <user> - gives coffee to <user> **coin**: <amount> - flips <amount> coins **color_parse**: Command has no documentation. -**compliment**: <user> -- Makes the bot compliment <user>. +**compliment**: <user> - Makes the bot compliment <user>. -**confucious**: confucious say man standing on toilet is high on pot. +**confucious**: - confucious say man standing on toilet is high on pot. **conncheck**: This command is an effort to make the bot reconnect to a network if it has been disconnected. ( *Permission required:* botcontrol) -**cookie**: <user> - gives <user> a cookie +**connlist (listconns):** - Lists all current connections and their status ( *Permission required:* botcontrol) + +**cookie**: <user> - gives a cookie to <user> -**crypto (cryptocurrency):** <ticker> -- Returns current value of a cryptocurrency +**crypto (cryptocurrency):** <ticker> <currency> -- Returns current value of a cryptocurrency **cycle**: <#channel> - cycles <#channel>, or the caller's channel if no channel is specified ( *Permission required:* botcontrol) **cypher (cipher):** <pass> <string> -- cyphers <string> with <password> -**dadjoke**: love em or hate em, bring on the dad jokes. +**dadjoke**: - love em or hate em, bring on the dad jokes. **debase64 (unbase64):** <string> -- Decode <string> with base64. @@ -122,13 +142,15 @@ gonzobot Command list **dogecoin (doge):** -- Returns current dogecoin value -**doit**: prints a do it line, example: mathmaticians do with a pencil +**doggifs**: - Returns a random dog GIF from http://bestanimations.com/ + +**doit**: - prints a do it line, example: mathmaticians do with a pencil **domain (domainr):** <domain> - uses domain.nr's API to search for a domain, and similar domains -**dominate (bdsm):** Just a little bit of kinky fun. +**donut**: <user> - gives a donut to <user> -**doobie**: <user> - pass the doobie to <user> +**doobie**: <user> - gives a doobie to <user> **down (offline, up):** <url> - checks if <url> is online or offline @@ -146,7 +168,7 @@ gonzobot Command list **duckkic (starthun, stophun):** dummmy command to make sure people use the full command so OPS can block it if they need to. -**duckkick**: If the bot has OP or half-op in the channel you can specify .duckkick enable|disable so that people are kicked for shooting or befriending a non-existent duck. Default is off. +**duckkick**: If the bot has OP or half-op in the channel you can specify .duckkick enable|disable so that people are kicked for shooting or befriending a non-existent duck. Default is off. ( *Permission required:* chanop, op, botcontrol) **duckmerge**: Moves the duck scores from one nick to another nick. Accepts two nicks as input the first will have their duck scores removed the second will have the first score added. Warning this cannot be undone. ( *Permission required:* botcontrol) @@ -154,7 +176,11 @@ gonzobot Command list **duckstats**: Prints duck statistics for the entire channel and totals for the network. -**dwi (dealwithit):** Tell some one in the channel to deal with it. File located in dwi.py +**dumpchans**: - Dumps all stored channel data for this connection to the console ( *Permission required:* botcontrol) + +**dumpusers**: - Dumps all stored user data for this connection to the console ( *Permission required:* botcontrol) + +**dwi (dealwithit):** <nick> - Tell <nick> in the channel to deal with it. Code located in reactions.py **e (etymology):** <word> - retrieves the etymology of <word> @@ -166,13 +192,15 @@ gonzobot Command list **expand**: <url> - unshortens <url> -**f (forget):** <word> - forgets previously remembered <word> ( *Permission required:* op) +**f (forget):** <word> - forgets previously remembered <word> ( *Permission required:* op, chanop) **fact**: Gets a random fact about numbers or dates. **feed (rss, news):** <feed> -- Gets the first three items from the RSS/ATOM feed <feed>. -**fight (spar, challenge, fite):** <nick>, makes you fight <nick> and generates a winner. +**fetish (tmf):** <nick> - Did some one just mention what your fetish was? Let <nick> know! Code located in reactions.py + +**fight (fite, challenge, spar):** <user> - fights <user> **fix**: fixes a flipped over table. ┬─┬ノ(ಠ_ಠノ) @@ -180,7 +208,7 @@ gonzobot Command list **flip**: <text> -- Flips <text> over. -**flirt (sexup, jackmeoff):** <user> - flirts with <user> +**flirt (jackmeoff, sexup):** <user> - flirts with <user> **flushlog**: Command has no documentation. ( *Permission required:* botcontrol) @@ -190,9 +218,9 @@ gonzobot Command list **fortune**: - hands out a fortune cookie -**fos (foaas, fuckoff):** fos <name> to tell some one to fuck off or just .fos for a generic fuckoff +**fos (fuckoff, foaas):** fos <name> to tell some one to fuck off or just .fos for a generic fuckoff -**fp (facepalm):** Expresses your frustration with another user. File located in dwi.py +**fp (facepalm):** <nick> - Expresses your frustration with <Nick>. Code located in reactions.py **friends**: Prints a list of the top duck friends in the channel, if 'global' is specified all channels in the database are included. @@ -212,7 +240,7 @@ gonzobot Command list **global_unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in ALL channels. ( *Permission required:* botcontrol) -**glomp**: glomps the specified nick. +**glomp**: <user> - glomps <user> **googl**: <url> <custom> - shorten <url> using goo.gl with <custom> as an option custom shortlink, @@ -234,27 +262,35 @@ gonzobot Command list **gusers**: <group> - lists users in <group> ( *Permission required:* permissions_users) -**halaal (halal):** Serves halaal dishes to some one in the channel +**halal (halaal):** <user> - gives food to <user> **hash**: <string> -- Returns hashes of <string>. +**hd (headdesk):** <nick> - Hit your head against the desk becausae of <nick>. Code located in reactions.py + **help**: <command> - gives help for <command>, or lists all available commands if no command is specified **herald**: herald <message> adds a greeting for your nick that will be announced everytime you join the channel. Using .herald show will show your current herald and .herald delete will remove your greeting. +**high5 (highfive, hi5):** <user> - highfives <user> + +**hookup**: matches two users from the channel in a sultry scene. + **horoscope**: <sign> - get your horoscope +**hug**: <user> - hugs <user> + **hunt_opt_out**: Running this command without any arguments displays the status of the current channel. hunt_opt_out add #channel will disable all duck hunt commands in the specified channel. hunt_opt_out remove #channel will re-enable the game for the specified channel. ( *Permission required:* op, ignore) -**icecream**: <user> - give icecream to <user> +**icecream**: <user> - gives icecream to <user> -**ignore**: <nick|mask> -- ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore) +**ignore**: <nick|mask> -- ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore, chanop) **imdb**: imdb <movie> - gets information about <movie> from IMDb **imgur**: <search term> / </r/subreddit> / </user/username> / memes / random - returns a link to a random imgur image based -**imguralbum (imgalbum, multiimgur, album):** <search term> / </r/subreddit> / </user/username> / memes / random - returns a link to lots of random images +**imguralbum (multiimgur, imgalbum, album):** <search term> / </r/subreddit> / </user/username> / memes / random - returns a link to lots of random images **info**: <factoid> - shows the source of a factoid @@ -272,13 +308,15 @@ gonzobot Command list **karma (ruser):** karma <reddituser> will return the information about the specified reddit username +**kebab**: <user> - gives a kebab to <user> + **kenm**: Wisdom from Ken M. **kernel**: - gets a list of linux kernel versions -**kero (kerowhack):** Returns the text input the way kerouac5 would say it. +**kero (kerowhack):** - Returns the text input the way kerouac5 would say it. -**keto**: <user> - give keto food to <user> +**keto**: <user> - gives food to <user> **kick**: <channel> <user> - kicks <user> from <channel>, or from the caller's channel if no channel is specified ( *Permission required:* op_kick, op) @@ -286,19 +324,19 @@ gonzobot Command list **killers**: Prints a list of the top duck killers in the channel, if 'global' is specified all channels in the database are included. -**kosher**: Servers a Kosher dish to some one in the channel. Part of halal.py. Made with help of snoonet user Yat +**kosher**: <user> - gives food to <user> **langlist (tlist):** List the languages/codes that can be used to translate. Translation is powered by Yandex https://translate.yandex.com **lart**: <user> - LARTs <user> -**lastfm (l, np, last):** <user> <dontsave> - displays the now playing (or last played) track of LastFM user <user> +**lastfm (last, np, l):** <user> <dontsave> - displays the now playing (or last played) track of LastFM user <user> **lastfmcompare (lc, compare):** <user> (<user> optional) - displays the now playing (or last played) track of LastFM user <user> **lastgrab (lgrab):** prints the last grabbed quote from <nick>. -**lawyerjoke**: returns a lawyer joke, so lawyers know how much we hate them +**lawyerjoke**: - returns a lawyer joke, so lawyers know how much we hate them **leet**: <text> -- Makes <text> more 1337h4x0rz. @@ -322,7 +360,7 @@ gonzobot Command list **libretopartists (libreta):** Grabs a list of the top artists for a libre.fm username. You can set your libre.fm username with .librefm username -**libretoptrack (libretoptracks, librett, libretop):** Grabs a list of the top tracks for a libre.fm username +**libretoptrack (librett, libretop, libretoptracks):** Grabs a list of the top tracks for a libre.fm username **listbad**: Returns a list of bad words specify a channel to see words for a particular channel ( *Permission required:* badwords) @@ -330,6 +368,8 @@ gonzobot Command list **listfacts**: - lists all available factoids +**listoptout**: <channel> - View the opt out data for <channel> or the current channel if not specified. Specify "global" to view all data for this network + **listregex**: Command has no documentation. ( *Permission required:* botcontrol) **litecoin (ltc):** -- Returns current litecoin value @@ -346,7 +386,7 @@ gonzobot Command list **lower**: <string> -- Convert string to lowercase. -**lta (topall):** Grabs a list of the top artists in the last year for a last.fm username. You can set your lastfm username with .l username +**lta (topartist):** Grabs a list of the top artists for a last.fm username. You can set your lastfm username with .l username **ltm (topmonth):** Grabs a list of the top artists in the last month for a last.fm username. You can set your lastfm username with .l username @@ -354,7 +394,9 @@ gonzobot Command list **ltw (topweek):** Grabs a list of the top artists in the last week for a last.fm username. You can set your lastfm username with .l username -**lurve (luv, luff):** lurves all over <user> +**lty (topyear):** Grabs a list of the top artists in the last year for a last.fm username. You can set your lastfm username with .l username + +**lurve (luff, luv):** <user> - lurves <user> **lyrics**: lyrics <artist and/or song> will fetch the first 150 characters of a song and a link to the full lyrics. @@ -362,27 +404,33 @@ gonzobot Command list **mcstatus**: - gets the status of various Mojang (Minecraft) servers -**mcuser (mcpaid, haspaid):** <username> - gets information about the Minecraft user <account> +**mcuser (haspaid, mcpaid):** <username> - gets information about the Minecraft user <account> **mcwiki**: mcwiki <phrase> - gets the first paragraph of the Minecraft Wiki article on <phrase> **me (act):** <#channel> <action> - acts out <action> in a <#channel>, or in the current channel of none is specified ( *Permission required:* botcontrol, snoonetstaff) +**meh**: - List the current meh.com deal. + **message (sayto):** <name> <message> - says <message> to <name> ( *Permission required:* botcontrol, snoonetstaff) **metacritic (mc):** <all|movie|tv|album|x360|ps3|pc|gba|ds|3ds|wii|vita|wiiu|xone|ps4> <title> - gets rating for <title> from **metar**: metars <ICAO station code> returns the metars information for the specified station. A list of station codes can be found here: http://weather.rap.ucar.edu/surface/stations.txt -**milkshake**: <user> - give a milkshake to <user> +**mfp (myfitnesspal):** <user> - returns macros from the MyFitnessPal food diary of <user> -**minuspts**: prints the things you have liked +**milkshake**: <user> - gives a milkshake to <user> -**mlb**: mlb <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**minuspts**: - prints the things you have disliked and their scores + +**mlb**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. **mlia**: - gets a random quote from MyLifeIsAverage.com -**mm (rmpoint):** .rmpoint or (.mm) <thing> subtracts a point from the <thing> +**mm (rmpoint):** <thing> - subtracts a point from the <thing> + +**mock**: <nick> - turn <user>'s last message in to aLtErNaTiNg cApS **monsterfriends**: Prints a list of the top monster friends in the channel, if 'global' is specified all channels in the database are included. @@ -398,9 +446,9 @@ gonzobot Command list **moreprofile**: If a category search has lots of results the results are paginated. If the most recent search is paginated the pages are stored for retrieval. If no argument is given the next page will be returned else a page number can be specified. -**morescore**: if a score list has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified. +**morescore**: <pagenum> - if a score list has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified. -**muffin**: <user> - give muffin to <user> +**muffin**: <user> - gives a muffin to <user> **munge**: <text> -- Munges up <text>. @@ -408,27 +456,27 @@ gonzobot Command list **namegen**: <generator|list> - generates some names using the chosen generator, or lists all generators if 'list' is specified -**nba**: nba <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**nba**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**ncaab**: ncaab <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**ncaab**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**ncaaf**: ncaaf <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**ncaaf**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. **newegg**: newegg <item name> - searches newegg.com for <item name> -**nfl**: nfl <team> gets the score or next schedule game for the specified team. If no team specified all games will be included. +**nfl**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**nhl**: nhl <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**nhl**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. **nick**: <nick> - changes my nickname to <nick> ( *Permission required:* botcontrol) -**nk**: outputs a random North Korea propoganda slogan +**nk**: - outputs a random North Korea propaganda slogan -**noodles**: <user> - give noodles to <user> +**noodles**: <user> - gives noodles to <user> -**note (todo, notes):** <add|list|get|del|clear> args - manipulates your list of notes +**note (notes, todo):** <add|list|get|del|clear> args - manipulates your list of notes -**nugget**: <user> - give nuggets to <user> +**nugget**: <user> - gives nuggets to <user> **objgrowth**: Command has no documentation. ( *Permission required:* botcontrol) @@ -438,37 +486,45 @@ gonzobot Command list **op**: <channel> <user> - ops <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_op, op) -**pancake**: <user> - give pancakes to <user> +**optout**: <chan> <pattern> <allow> - Set the global allow option for hooks matching <pattern> in <chan>, or the current channel if not specified + +**pancake**: <user> - gives pancakes to <user> **part**: <#channel> - parts <#channel>, or the caller's channel if no channel is specified ( *Permission required:* botcontrol, snoonetstaff) **password**: <length <types>> - generates a password of <length> (default 12). <types> can include 'alpha', 'no caps', 'numeric', 'symbols' or any combination: eg. 'numbers symbols' (default: alpha numeric no caps) -**pasta**: <user> - give pasta to <user> +**pasta**: <user> - gives pasta to <user> **penis (bepis):** much dongs, very ween, add a user nick as an arguement for slightly different 'output' -**pie**: <user> - give pie to <user> +**pie**: <user> - gives pie to <user> **pig (piglatin):** pig <text> -- Converts <text> to pig latin. **ping**: <host> <count> - pings <host> <count> times -**pizza**: <user> - give pizza to <user> +**pizza**: <user> - gives pizza to <user> **plays**: <artist> - displays the current user's playcount for <artist>. You must have your username saved. **plpaste**: <command> - pastes the plugin file that contains <command> ( *Permission required:* botcontrol) -**pluspts**: prints the things you have liked +**pluginlist**: - List all currently loaded plugins ( *Permission required:* botcontrol) + +**pluginload**: <plugin path> - (Re)load <plugin> manually ( *Permission required:* botcontrol) + +**pluginunload**: <plugin path> - Unload <plugin> manually ( *Permission required:* botcontrol) + +**pluspts**: - prints the things you have liked and their scores -**points**: .points <thing> will print the total points for <thing> in the channel. +**points**: <thing> - will print the total points for <thing> in the channel. **poll**: Command has no documentation. -**potato**: <user> - makes <user> a tasty little potato +**potato**: <user> - gives a potato to <user> -**pp (addpoint):** .addpoint or (.pp) <thing> adds a point to the <thing> +**pp (addpoint):** <thing> - adds a point to the <thing> **pre (scene):** pre <query> -- searches scene releases using orlydb.com @@ -484,7 +540,7 @@ gonzobot Command list **pronounce (sounditout):** <word> -- Returns instructions on how to pronounce <word> with an audio example. -**pun**: Come on everyone loves puns right? +**pun**: - Come on everyone loves puns right? **pymdiff**: Command has no documentation. ( *Permission required:* botcontrol) @@ -500,7 +556,7 @@ gonzobot Command list **quran (verse):** Prints the specified Qur'anic verse(s) and its/their translation(s) -**r (remember):** <word> <+><data> - remembers <data> with <word> - add + to <data> to append ( *Permission required:* op) +**r (remember):** <word> <+><data> - remembers <data> with <word> - add + to <data> to append. If the input starts with <act> the message will be sent as an action. If <user> in in the message it will be replaced by input arguments when command is called. ( *Permission required:* op, chanop) **rainbow**: <text> -- Gives <text> rainbow colors. @@ -508,7 +564,7 @@ gonzobot Command list **raw**: <command> - sends <command> as a raw IRC command ( *Permission required:* botcontrol) -**reconnect**: This command is an effort to use the connect method to manually reconnect to a network if it has been disconnected. ( *Permission required:* botcontrol) +**reconnect**: <connection> - Reconnects to <connection> or the current connection if not specified ( *Permission required:* botcontrol) **reddit**: <subreddit> <n> - gets a random post from <subreddit>, or gets the <n>th post in the subreddit @@ -528,6 +584,8 @@ gonzobot Command list **reverse**: <string> -- Reverses <string>. +**rice**: <user> - gives rice to <user> + **rmbad (delbad):** removes the specified word from the specified channels bad word list ( *Permission required:* badwords) **roll (dice):** <dice roll> - simulates dice rolls. Example: 'dice 2d20-d5+4 roll 2': D20s, subtract 1D5, add 4 @@ -536,13 +594,15 @@ gonzobot Command list **rottentomatoes (rt):** rt <title> -- gets ratings for <title> from Rotten Tomatoes -**ruad (rud, ruadick):** checks ruadick.com to see if you're a dick on reddit +**ruad (ruadick, rud):** checks ruadick.com to see if you're a dick on reddit + +**sandwich**: <user> - gives a sandwich to <user> -**sandwich**: <user> - give a tasty sandwich to <user> +**sauce (source):** Returns a link to the source **say**: <#channel> <message> - says <message> to <#channel>, or to the caller's channel if no channel is specified ( *Permission required:* botcontrol, snoonetstaff) -**scone**: <user> - give scone to <user> +**scone**: <user> - gives a scone to <user> **scuser**: <query> -- Searches for users on SoundCloud. @@ -552,15 +612,21 @@ gonzobot Command list **showtells**: showtells -- View all pending tell messages (sent in a notice). -**slap**: <user> -- Makes the bot slap <user>. +**shrug**: shrugs + +**slap**: <user> - Makes the bot slap <user>. + +**slickdeals**: - List the top 3 frontpage slickdeals.net deals. **snopes**: snopes <topic> -- Searches snopes for an urban legend about <topic>. **soundcloud (sc):** <query> -- Searches for tracks on SoundCloud. +**soup**: <user> - gives Some Soup to <user> + **spalbum**: spalbum <album> -- Search Spotify for <album> -**spank**: <user> - Spanks a <user> +**spank**: <user> - Spanks <user> **spartist (artist):** spartist <artist> -- Search Spotify for <artist> @@ -568,23 +634,25 @@ gonzobot Command list **spotify (sptrack):** spotify <song> -- Search Spotify for <song> -**starthunt**: This command starts a duckhunt in your channel, to stop the hunt use .stophunt +**starthunt**: This command starts a duckhunt in your channel, to stop the hunt use .stophunt ( *Permission required:* chanop, op, botcontrol) -**steak**: <user> - give a steak dinner to <user> +**steak**: <user> - gives a nice steak dinner to <user> **steam**: <query> - Search for specified game/trailer/DLC -**steamid (sid, steamuser, su):** steamid <username> -- gets the steam ID of <username>. Uses steamcommunity.com/id/<nickname>. +**steamcalc (steamdb):** steamcalc <username> - Gets value of steam account. Uses steamcommunity.com/id/<nickname>. + +**steamid (steamuser, su, sid):** steamid <username> -- gets the steam ID of <username>. Uses steamcommunity.com/id/<nickname>. **stock**: <symbol> -- gets stock information -**stophunt**: This command stops the duck hunt in your channel. Scores will be preserved +**stophunt**: This command stops the duck hunt in your channel. Scores will be preserved ( *Permission required:* chanop, op, botcontrol) **stopthebot**: <reason> - stops me with <reason> as its quit message. ( *Permission required:* botcontrol) -**strax**: Strax quote. +**strax**: <user> - Generates a quote from Strax, optionally targeting <user> -**subinfo (sub, rinfo, subreddit):** subinfo <subreddit> fetches information about the specified subreddit. +**subinfo (sub, subreddit, rinfo):** subinfo <subreddit> fetches information about the specified subreddit. **submods (mods, rmods):** submods <subreddit> prints the moderators of the specified subreddit. @@ -594,7 +662,7 @@ gonzobot Command list **superscript**: <text> -- Makes <text> superscript. -**sushi**: <user> - give sushi to <user> +**sushi**: <user> - gives sushi to <user> **swapcase**: <string> -- Swaps the capitalization of <string>. @@ -604,14 +672,16 @@ gonzobot Command list **table**: <text> -- (╯°□°)╯︵ <ʇxǝʇ> -**taco**: <user> - give a taco to <user> +**taco**: <user> - gives a taco to <user> **taf**: tafs <ICAO station code> returns the taf information for the specified station. A list of station codes can be found here: http://weather.rap.ucar.edu/surface/stations.txt -**tea**: <user> - give tea to <user> +**tea**: <user> - gives tea to <user> **tell**: tell <nick> <message> -- Relay <message> to <nick> when <nick> is around. +**tfw**: Command has no documentation. + **threaddump**: Command has no documentation. ( *Permission required:* botcontrol) **time**: <location> -- Gets the current time in <location>. @@ -620,13 +690,13 @@ gonzobot Command list **topic**: <channel> <topic> - changes the topic to <topic> in <channel>, or in the caller's channel ( *Permission required:* op_topic, op) -**topten (pointstop, loved):** .topten or .pointstop prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. +**topten (pointstop, loved):** - prints the top 10 things with the highest points in the channel. To see the top 10 items in all of the channels the bot sits in use .topten global. **tran (translate):** tran <language or language code> text to translate. Translation is Powered by Yandex https://translate.yandex.com -**triforce**: returns a triforce! +**triforce**: - returns a triforce! -**trump**: trump a user. +**trump**: <user> - Trump a <user> **tv (tv_next):** tv <series> -- Get the next episode of <series>. @@ -644,7 +714,7 @@ gonzobot Command list **unescape**: <string> -- Unicode unescapes <string>. -**unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore) +**unignore**: <nick|mask> -- un-ignores all input from <nick|mask> in this channel. ( *Permission required:* ignore, chanop) **unlock**: <channel> - unlocks <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_lock, op) @@ -652,6 +722,8 @@ gonzobot Command list **unquiet**: <channel> <user> - unquiets <user> in <channel>, or in the caller's channel if no channel is specified ( *Permission required:* op_quiet, op) +**updateusers**: - Forces an update of all /NAMES data for all channels ( *Permission required:* botcontrol) + **uperms**: <user> - lists all permissions given to <user>, or the caller if no user is specified **upper**: <string> -- Convert string to uppercase. @@ -672,19 +744,21 @@ gonzobot Command list **whois**: <domain> -- Does a whois query on <domain>. -**wiki (wikipedia, w):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. +**wiki (w, wikipedia):** wiki <phrase> -- Gets first sentence of Wikipedia article on <phrase>. + +**wine**: <user> - gives wine to <user> -**wisdom**: words of wisdom from various bathroom stalls. +**wisdom**: - words of wisdom from various bathroom stalls. -**wnba**: wnba <team city> gets the score or next scheduled game for the specified team. If no team is specified all games will be included. +**wnba**: <team city> - gets the score or next scheduled game for the specified team. If no team is specified all games will be included. -**wolframalpha (ca, math, wa, calc, convert):** <query> -- Computes <query> using Wolfram Alpha. +**wolframalpha (ca, wa, math, calc, convert):** <query> -- Computes <query> using Wolfram Alpha. **word (wordoftheday):** returns the word of the day. To see past word of the day enter use the format yyyy-MM-dd. The specified date must be after 2009-08-10. **wordrandom (randomword):** Grabs a random word from wordnik.com -**wordusage (usage, wordexample):** <word> -- Returns an example sentence showing the usage of <word>. +**wordusage (wordexample, usage):** <word> -- Returns an example sentence showing the usage of <word>. **wpass (wordpass, wordpassword):** <length> - generates an easy to remember password with <length> (default 4) commonly used words @@ -694,11 +768,11 @@ gonzobot Command list **xkcd**: xkcd <search term> - Search for xkcd comic matching <search term> -**yomomma**: input <nick>, tells a yo momma joke to <nick> +**yomomma**: <nick> - tells a yo momma joke to <nick> **youtime (ytime):** youtime <query> -- Gets the total run time of the first YouTube search result for <query>. -**youtube (yt, y, you):** youtube <query> -- Returns the first YouTube search result for <query>. +**youtube (yt, you, y):** youtube <query> -- Returns the first YouTube search result for <query>. **zombs**: prints some fucked up shit. From f87307071cd75b1b28bfcbd903bb59ab18066459 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 12:06:38 -0600 Subject: [PATCH 79/87] Remove #anxiety from old optout system --- plugins/attacks.py | 2 +- plugins/drinks.py | 2 +- plugins/google.py | 2 +- plugins/grab.py | 2 +- plugins/herald.py | 2 +- plugins/hookup.py | 2 +- plugins/jokes.py | 2 +- plugins/mylife.py | 2 +- plugins/poll.py | 2 +- plugins/recipe.py | 2 +- plugins/thefuckingweather.py | 2 +- plugins/urban.py | 2 +- plugins/utility.py | 2 +- plugins/wyr.py | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index 7b3b51506..bc2f905e8 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -8,7 +8,7 @@ from cloudbot.util import textgen -opt_out = ['#anxiety', '#math', '#drama', '#bipolar'] +opt_out = ['#math', '#drama', '#bipolar'] @unique diff --git a/plugins/drinks.py b/plugins/drinks.py index 8b4783969..050605c43 100644 --- a/plugins/drinks.py +++ b/plugins/drinks.py @@ -16,7 +16,7 @@ def load_drinks(bot): @hook.command() def drink(text, chan, action): """, makes the user a random cocktail.""" - if chan in ["#islam", "#stopdrinking", "#anxiety","#soberloners"]: + if chan in ["#islam", "#stopdrinking", "#soberloners"]: action ("boils some water and makes {} a delicious cup of tea.".format(text),chan) return index = random.randint(0,len(drinks)-1) diff --git a/plugins/google.py b/plugins/google.py index 564419eac..b49c1489c 100644 --- a/plugins/google.py +++ b/plugins/google.py @@ -3,7 +3,7 @@ from cloudbot import hook from cloudbot.util import http, formatting -opt_out = ['#anxiety'] +opt_out = [] def api_get(kind, query): """Use the RESTful Google Search API""" diff --git a/plugins/grab.py b/plugins/grab.py index 922b86335..0ce39d436 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -12,7 +12,7 @@ search_pages = defaultdict(dict) -opt_out = ['#anxiety', '#writingprompts', '#drama', '#pufftown'] +opt_out = ['#writingprompts', '#drama', '#pufftown'] table = Table( 'grab', diff --git a/plugins/herald.py b/plugins/herald.py index 7f11acf19..7444cc7e9 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -8,7 +8,7 @@ from cloudbot import hook from cloudbot.util import database -opt_out = ['#modtalk', '#anxiety', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] +opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] delay = 10 floodcheck = {} diff --git a/plugins/hookup.py b/plugins/hookup.py index e5a018fbf..3fca40868 100644 --- a/plugins/hookup.py +++ b/plugins/hookup.py @@ -9,7 +9,7 @@ from cloudbot.util.textgen import TextGenerator -opt_out = ['#anxiety'] +opt_out = [] hookups = {} diff --git a/plugins/jokes.py b/plugins/jokes.py index c6bdc45e7..70ac13413 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -5,7 +5,7 @@ from cloudbot import hook -opt_out = ['#anxiety'] +opt_out = [] @hook.on_start() def load_jokes(bot): diff --git a/plugins/mylife.py b/plugins/mylife.py index e73375508..133f3bf13 100644 --- a/plugins/mylife.py +++ b/plugins/mylife.py @@ -10,7 +10,7 @@ fml_cache = [] mlia_cache = [] -opt_out = ['#anxiety'] +opt_out = [] @asyncio.coroutine def refresh_fml_cache(loop): diff --git a/plugins/poll.py b/plugins/poll.py index 7e2668048..93d1265d4 100644 --- a/plugins/poll.py +++ b/plugins/poll.py @@ -4,7 +4,7 @@ from cloudbot.util.formatting import get_text_list -opt_out = ['#anxiety'] +opt_out = [] polls = {} diff --git a/plugins/recipe.py b/plugins/recipe.py index e524928db..3fd272ca3 100644 --- a/plugins/recipe.py +++ b/plugins/recipe.py @@ -24,7 +24,7 @@ SEARCH_URL = BASE_URL + "/searches" RANDOM_URL = SEARCH_URL + "/surprise" -opt_out = ['#anxiety'] +opt_out = [] # set this to true to censor this plugin! CENSOR = False diff --git a/plugins/thefuckingweather.py b/plugins/thefuckingweather.py index 5a22aca7d..51fcab1fb 100644 --- a/plugins/thefuckingweather.py +++ b/plugins/thefuckingweather.py @@ -18,7 +18,7 @@ from bs4 import BeautifulSoup import urllib.parse -opt_out = ['#anxiety'] +opt_out = [] DEGREE_SYMBOL = "F" diff --git a/plugins/urban.py b/plugins/urban.py index fbefdbe12..9152a3f4b 100644 --- a/plugins/urban.py +++ b/plugins/urban.py @@ -5,7 +5,7 @@ from cloudbot import hook from cloudbot.util import formatting -opt_out = ['#anxiety'] +opt_out = [] base_url = 'http://api.urbandictionary.com/v0' define_url = base_url + "/define" diff --git a/plugins/utility.py b/plugins/utility.py index c18e1819a..656dafe35 100644 --- a/plugins/utility.py +++ b/plugins/utility.py @@ -27,7 +27,7 @@ from cloudbot import hook from cloudbot.util import formatting, web, colors -opt_out = ['#anxiety'] +opt_out = [] COLORS = collections.OrderedDict([ ('red', '\x0304'), diff --git a/plugins/wyr.py b/plugins/wyr.py index 6b3188589..effc1c2cc 100644 --- a/plugins/wyr.py +++ b/plugins/wyr.py @@ -21,7 +21,7 @@ API_URL = "http://www.rrrather.com/botapi" FILTERED_TAGS = () -opt_out = ['#anxiety'] +opt_out = [] def get_wyr(headers): """ Gets a entry from the RRRather API and cleans up the data """ From 4805bd1dbedde905bc048186ffd1e8961017af4b Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 12:33:01 -0600 Subject: [PATCH 80/87] Remove empty optouts --- plugins/google.py | 3 --- plugins/herald.py | 1 - plugins/history.py | 1 + plugins/hookup.py | 5 ----- plugins/jokes.py | 15 +++------------ plugins/karma.py | 2 -- plugins/lastfm.py | 1 + plugins/mylife.py | 7 +++---- plugins/poll.py | 6 +----- plugins/recipe.py | 6 +----- plugins/thefuckingweather.py | 4 ---- plugins/urban.py | 6 ++---- plugins/utility.py | 19 +++++-------------- plugins/wyr.py | 5 +---- 14 files changed, 18 insertions(+), 63 deletions(-) diff --git a/plugins/google.py b/plugins/google.py index b49c1489c..da38ee738 100644 --- a/plugins/google.py +++ b/plugins/google.py @@ -3,7 +3,6 @@ from cloudbot import hook from cloudbot.util import http, formatting -opt_out = [] def api_get(kind, query): """Use the RESTful Google Search API""" @@ -15,8 +14,6 @@ def api_get(kind, query): #@hook.command("googleimage", "gis", "image") def googleimage(text): """ - returns the first google image result for """ - if chan in opt_out: - return parsed = api_get('images', text) if not 200 <= parsed['responseStatus'] < 300: raise IOError('error searching for images: {}: {}'.format(parsed['responseStatus'], '')) diff --git a/plugins/herald.py b/plugins/herald.py index 7444cc7e9..464f9f9bc 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -1,7 +1,6 @@ import random import re import time -import random from sqlalchemy import Table, Column, String, PrimaryKeyConstraint, select diff --git a/plugins/history.py b/plugins/history.py index 25835d044..5f32fa069 100644 --- a/plugins/history.py +++ b/plugins/history.py @@ -89,6 +89,7 @@ def seen(text, nick, chan, db, event): :type event: cloudbot.event.Event :type conn: cloudbot.client.Client """ + if event.conn.nick.lower() == text.lower(): return "You need to get your eyes checked." diff --git a/plugins/hookup.py b/plugins/hookup.py index 3fca40868..46d37a443 100644 --- a/plugins/hookup.py +++ b/plugins/hookup.py @@ -5,11 +5,8 @@ import time from cloudbot import hook - from cloudbot.util.textgen import TextGenerator - -opt_out = [] hookups = {} @@ -23,8 +20,6 @@ def load_data(bot): @hook.command(autohelp=False) def hookup(db, chan): """matches two users from the channel in a sultry scene.""" - if chan in opt_out: - return times = time.time() - 86400 results = db.execute("select name from seen_user where chan = :chan and time > :time", {"chan": chan, "time": times}).fetchall() if not results or len(results) < 2: diff --git a/plugins/jokes.py b/plugins/jokes.py index 70ac13413..960fea2d0 100644 --- a/plugins/jokes.py +++ b/plugins/jokes.py @@ -5,7 +5,6 @@ from cloudbot import hook -opt_out = [] @hook.on_start() def load_jokes(bot): @@ -43,19 +42,15 @@ def load_jokes(bot): @hook.command() -def yomomma(text, chan, message, conn): +def yomomma(text): """ - tells a yo momma joke to """ - if chan in opt_out: - return target = text.strip() return '{}, {}'.format(target, random.choice(yo_momma).lower()) @hook.command(autohelp=False) -def doit(message, chan, conn): +def doit(message): """- prints a do it line, example: mathmaticians do with a pencil""" - if chan in opt_out: - return message(random.choice(do_it)) @@ -94,10 +89,8 @@ def bookpun(message): @hook.command("boobs", "boobies") -def boobies(text, chan, conn): +def boobies(text): """- prints boobies!""" - if chan in opt_out: - return boob = "\u2299" out = text.strip() out = out.replace('o', boob).replace('O', boob).replace('0', boob) @@ -108,8 +101,6 @@ def boobies(text, chan, conn): @hook.command("zombs", autohelp=False) def zombs(conn, chan): """prints some fucked up shit.""" - if chan in opt_out: - return out = "\u2299\u2299\u0505\u0F0D\u0020\u0E88\u0020\u25DE\u0C6A\u25DF\u0E88\u0020\u0F0D\u0648" return out diff --git a/plugins/karma.py b/plugins/karma.py index 76f93e0df..0f4d563b6 100644 --- a/plugins/karma.py +++ b/plugins/karma.py @@ -25,7 +25,6 @@ @hook.command("pp", "addpoint") def addpoint(text, nick, chan, db, conn): """ - adds a point to the """ - text = text.strip() karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name': nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: @@ -54,7 +53,6 @@ def re_addpt(match, nick, chan, db, conn, notice): @hook.command("mm", "rmpoint") def rmpoint(text, nick, chan, db, conn): """ - subtracts a point from the """ - text = text.strip() karma = db.execute("select score from karma where name = :name and chan = :chan and thing = :thing", {'name': nick, 'chan': chan, 'thing': text.lower()}).fetchone() if karma: diff --git a/plugins/lastfm.py b/plugins/lastfm.py index d909a34ee..d84e4a6c6 100644 --- a/plugins/lastfm.py +++ b/plugins/lastfm.py @@ -272,6 +272,7 @@ def lastfm(event, db, text, nick, bot): load_cache(db) return out + @hook.command("plays") def getuserartistplaycount(event, bot, text, nick): """[artist] - displays the current user's playcount for [artist]. You must have your username saved.""" diff --git a/plugins/mylife.py b/plugins/mylife.py index 133f3bf13..92c190415 100644 --- a/plugins/mylife.py +++ b/plugins/mylife.py @@ -10,7 +10,7 @@ fml_cache = [] mlia_cache = [] -opt_out = [] + @asyncio.coroutine def refresh_fml_cache(loop): @@ -57,10 +57,9 @@ def initial_refresh(loop): @asyncio.coroutine @hook.command(autohelp=False) -def fml(reply, loop, chan): +def fml(reply, loop): """- gets a random quote from fmylife.com""" - if chan in opt_out: - return + if fml_cache: # grab the last item in the fml cache and remove it fml_id, text = fml_cache.pop() diff --git a/plugins/poll.py b/plugins/poll.py index 93d1265d4..5c1fb4ca0 100644 --- a/plugins/poll.py +++ b/plugins/poll.py @@ -4,7 +4,6 @@ from cloudbot.util.formatting import get_text_list -opt_out = [] polls = {} @@ -67,8 +66,7 @@ def format_results(self): @hook.command() def poll(text, conn, nick, chan, message, reply): global polls - if chan in opt_out: - return + # get poll ID uid = ":".join([conn.name, chan, nick]).lower() @@ -108,8 +106,6 @@ def poll(text, conn, nick, chan, message, reply): def vote(text, nick, conn, chan, notice): """.vote - Vote on a poll; responds on error and silently records on success.""" global polls - if chan in opt_out: - return if len(text.split(' ', 1)) == 2: _user, option = text.split(' ', 1) diff --git a/plugins/recipe.py b/plugins/recipe.py index 3fd272ca3..c750dc3b5 100644 --- a/plugins/recipe.py +++ b/plugins/recipe.py @@ -24,8 +24,6 @@ SEARCH_URL = BASE_URL + "/searches" RANDOM_URL = SEARCH_URL + "/surprise" -opt_out = [] - # set this to true to censor this plugin! CENSOR = False PHRASES = [ @@ -70,10 +68,8 @@ def get_data(url): #@hook.command(autohelp=False) -def recipe(text, chan): +def recipe(text): """[term] - gets a recipe for [term], or gets a random recipe if no term is specified""" - if chan in opt_out: - return if text: # get the recipe URL by searching try: diff --git a/plugins/thefuckingweather.py b/plugins/thefuckingweather.py index 51fcab1fb..3e70967e2 100644 --- a/plugins/thefuckingweather.py +++ b/plugins/thefuckingweather.py @@ -18,8 +18,6 @@ from bs4 import BeautifulSoup import urllib.parse -opt_out = [] - DEGREE_SYMBOL = "F" @@ -75,8 +73,6 @@ def get_weather(text, reply): If you need a degree symbol, you can use thefuckingweather.DEGREE_SYMBOL. """ - if chan in opt_out: - return # Generate query string query = {"where": text} # if celsius: diff --git a/plugins/urban.py b/plugins/urban.py index 9152a3f4b..01b463433 100644 --- a/plugins/urban.py +++ b/plugins/urban.py @@ -5,7 +5,6 @@ from cloudbot import hook from cloudbot.util import formatting -opt_out = [] base_url = 'http://api.urbandictionary.com/v0' define_url = base_url + "/define" @@ -13,10 +12,9 @@ @hook.command("urban", "u", autohelp=False) -def urban(text, chan): +def urban(text): """urban [id] -- Looks up on urbandictionary.com.""" - if chan in opt_out: - return + headers = { "Referer": "http://m.urbandictionary.com" } diff --git a/plugins/utility.py b/plugins/utility.py index 656dafe35..84d186955 100644 --- a/plugins/utility.py +++ b/plugins/utility.py @@ -27,7 +27,6 @@ from cloudbot import hook from cloudbot.util import formatting, web, colors -opt_out = [] COLORS = collections.OrderedDict([ ('red', '\x0304'), @@ -226,10 +225,8 @@ def leet(text): # Based on plugin by FurCode - @hook.command -def derpify(text, chan): - """derpify - returns some amusing responses from your input.""" - if chan in opt_out: - return +def derpify(text): + """ - returns some amusing responses from your input.""" string = text.upper() pick_the = random.choice(["TEH", "DA"]) pick_e = random.choice(["E", "3", "A"]) @@ -256,10 +253,8 @@ def color_parse(text): # colors - based on code by Reece Selwood - @hook.command -def rainbow(text, chan): +def rainbow(text): """ -- Gives rainbow colors.""" - if chan in opt_out: - return text = str(text) text = strip(text) col = list(COLORS.items()) @@ -274,10 +269,8 @@ def rainbow(text, chan): @hook.command -def wrainbow(text, chan): +def wrainbow(text): """ -- Gives each word in rainbow colors.""" - if chan in opt_out: - return text = str(text) col = list(COLORS.items()) text = strip(text).split(' ') @@ -289,10 +282,8 @@ def wrainbow(text, chan): @hook.command -def usa(text, chan): +def usa(text): """ -- Makes more patriotic.""" - if chan in opt_out: - return text = strip(text) c = [COLORS['red'], '\x0300', COLORS['blue']] l = len(c) diff --git a/plugins/wyr.py b/plugins/wyr.py index effc1c2cc..54ab4d99a 100644 --- a/plugins/wyr.py +++ b/plugins/wyr.py @@ -21,7 +21,6 @@ API_URL = "http://www.rrrather.com/botapi" FILTERED_TAGS = () -opt_out = [] def get_wyr(headers): """ Gets a entry from the RRRather API and cleans up the data """ @@ -45,10 +44,8 @@ def get_wyr(headers): @hook.command("wyr", "wouldyourather", autohelp=False) -def wyr(bot, chan): +def wyr(bot): """ -- What would you rather do? """ - if chan in opt_out: - return headers = {"User-Agent": bot.user_agent} # keep trying to get entries until we find one that is not filtered From a8bc65b19880ab846b0e79002ab142c5de537abd Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 12:48:28 -0600 Subject: [PATCH 81/87] Remove herald optout for #xboxone --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 464f9f9bc..2d47f3787 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -7,7 +7,7 @@ from cloudbot import hook from cloudbot.util import database -opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#xboxone', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] +opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] delay = 10 floodcheck = {} From 482b56204fe4d9a6d15b447c4745ebb040674c4c Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 13:02:44 -0600 Subject: [PATCH 82/87] Remove herald optout for #britishpolitics --- plugins/herald.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/herald.py b/plugins/herald.py index 2d47f3787..de28884a9 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -7,7 +7,7 @@ from cloudbot import hook from cloudbot.util import database -opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers', '#britishpolitics'] +opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers'] delay = 10 floodcheck = {} From 2ca7d91eeb70778ca2dad5c182069fcec3fe9f27 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 14:07:24 -0600 Subject: [PATCH 83/87] Remove optouts for #showgoat and #toolbox --- plugins/herald.py | 2 +- plugins/link_announcer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/herald.py b/plugins/herald.py index de28884a9..7bcfab983 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -7,7 +7,7 @@ from cloudbot import hook from cloudbot.util import database -opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#showgoat', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers'] +opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers'] delay = 10 floodcheck = {} diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 44c1a8114..1876b8dae 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ # This will match any URL, blacklist removed and abstracted to a priority/halting system url_re = re.compile(r'https?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', re.I) -opt_out = ["#yogscast", "#mturk", "#europa", "#toolbox", "#cryptos"] +opt_out = ["#yogscast", "#mturk", "#europa", "#cryptos"] HEADERS = { 'Accept-Language': 'en-US,en;q=0.5', From 8c8c7764ed43a79a2234a6b770dd1133c4d49f54 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Sun, 26 Nov 2017 16:46:18 -0600 Subject: [PATCH 84/87] Migrate old optouts to the new system and fix differences from upstream repo --- plugins/attacks.py | 3 --- plugins/bing.py | 7 +++---- plugins/dogpile.py | 2 +- plugins/drinks.py | 3 --- plugins/grab.py | 13 ------------- plugins/herald.py | 4 +--- plugins/horoscope.py | 4 +--- plugins/link_announcer.py | 2 +- plugins/quote.py | 3 +-- 9 files changed, 8 insertions(+), 33 deletions(-) diff --git a/plugins/attacks.py b/plugins/attacks.py index bc2f905e8..2aaf2b5b3 100644 --- a/plugins/attacks.py +++ b/plugins/attacks.py @@ -8,9 +8,6 @@ from cloudbot.util import textgen -opt_out = ['#math', '#drama', '#bipolar'] - - @unique class RespType(Enum): ACTION = 1 diff --git a/plugins/bing.py b/plugins/bing.py index 8b34bb08d..307ec3766 100644 --- a/plugins/bing.py +++ b/plugins/bing.py @@ -16,7 +16,7 @@ # the default config just sets the filter to Moderate for all queries DEFAULT_FILTER = "Moderate" NSFW_FILTER = "Off" -opt_out = ['#foreveralone'] + def unescape(s): if not s.strip(): @@ -72,11 +72,10 @@ def bing(text, bot): @hook.command("bingimage", "bis") -def bingimage(text, bot, chan): +def bingimage(text, bot): """ - returns the first bing image search result for """ api_key = bot.config.get("api_keys", {}).get("bing_azure") - if chan in opt_out: - return + # handle NSFW show_nsfw = text.endswith(" nsfw") diff --git a/plugins/dogpile.py b/plugins/dogpile.py index ec6cd3fb8..5f7508b5e 100644 --- a/plugins/dogpile.py +++ b/plugins/dogpile.py @@ -9,7 +9,7 @@ HEADERS = {'User-Agent': 'Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19'} -opt_out = ["#foreveralone"] +opt_out = [] @hook.command("dpis", "gis") def dogpileimage(text, chan): diff --git a/plugins/drinks.py b/plugins/drinks.py index 050605c43..931810f9f 100644 --- a/plugins/drinks.py +++ b/plugins/drinks.py @@ -16,9 +16,6 @@ def load_drinks(bot): @hook.command() def drink(text, chan, action): """, makes the user a random cocktail.""" - if chan in ["#islam", "#stopdrinking", "#soberloners"]: - action ("boils some water and makes {} a delicious cup of tea.".format(text),chan) - return index = random.randint(0,len(drinks)-1) drink = drinks[index]['title'] url = web.try_shorten(drinks[index]['url']) diff --git a/plugins/grab.py b/plugins/grab.py index 0ce39d436..0728f2571 100644 --- a/plugins/grab.py +++ b/plugins/grab.py @@ -12,8 +12,6 @@ search_pages = defaultdict(dict) -opt_out = ['#writingprompts', '#drama', '#pufftown'] - table = Table( 'grab', database.metadata, @@ -48,8 +46,6 @@ def load_cache(db): @hook.command("moregrab", autohelp=False) def moregrab(text, chan, conn): """if a grab search has lots of results the results are pagintated. If the most recent search is paginated the pages are stored for retreival. If no argument is given the next page will be returned else a page number can be specified.""" - if chan in opt_out: - return pages = search_pages[conn.name].get(chan) if not pages: return "There are no grabsearch pages to show." @@ -101,8 +97,6 @@ def get_latest_line(conn, chan, nick): @hook.command() def grab(text, nick, chan, db, conn): """grab grabs the last message from the specified nick and adds it to the quote database""" - if chan.lower() in opt_out: - return if text.lower() == nick.lower(): return "Didn't your mother teach you not to grab yourself?" @@ -144,8 +138,6 @@ def format_grab(name, quote): @hook.command("lastgrab", "lgrab") def lastgrab(text, chan, message): """prints the last grabbed quote from .""" - if chan.lower() in opt_out: - return lgrab = "" try: lgrab = grab_cache[chan][text.lower()][-1] @@ -159,8 +151,6 @@ def lastgrab(text, chan, message): @hook.command("grabrandom", "grabr", autohelp=False) def grabrandom(text, chan, message): """grabs a random quote from the grab database""" - if chan.lower() in opt_out: - return grab = "" name = "" if text: @@ -187,9 +177,6 @@ def grabrandom(text, chan, message): @hook.command("grabsearch", "grabs", autohelp=False) def grabsearch(text, chan, conn): """.grabsearch matches "text" against nicks or grab strings in the database""" - if chan in opt_out: - return - out = "" result = [] try: quotes = grab_cache[chan][text.lower()] diff --git a/plugins/herald.py b/plugins/herald.py index 7bcfab983..13233444f 100644 --- a/plugins/herald.py +++ b/plugins/herald.py @@ -7,8 +7,7 @@ from cloudbot import hook from cloudbot.util import database -opt_out = ['#modtalk', '#games', '#newzealand', '#badsubhub', '#random', '#playstation', '#groove', '#longdistance', '#destinythegame', '#dramaland', '#warhammer', '#r4r', '#redditsquaredcircle', '#sweden', '#drama', '#serbia','#foreveralone', '#f1', '#sweden', '#trackers'] - +opt_out = [] delay = 10 floodcheck = {} @@ -118,5 +117,4 @@ def welcome(nick, message, db, bot, chan): message("DECOY DUCK --> {}".format(greet), chan) else: message("\u200b {}".format(greet), chan) - floodcheck[chan] = time.time() diff --git a/plugins/horoscope.py b/plugins/horoscope.py index 0954e9782..2c4f06ceb 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -16,10 +16,8 @@ @hook.command(autohelp=False) -def horoscope(text, db, bot, message, notice, nick, chan): +def horoscope(text, db, bot, notice, nick, message): """ - get your horoscope""" - if chan in ["#islam", "#stopdrinking"]: - return "I didn't think people in here cared about horoscopes." signs = { 'aries': '1', 'taurus': '2', diff --git a/plugins/link_announcer.py b/plugins/link_announcer.py index 1876b8dae..614d8aacb 100644 --- a/plugins/link_announcer.py +++ b/plugins/link_announcer.py @@ -10,7 +10,7 @@ # This will match any URL, blacklist removed and abstracted to a priority/halting system url_re = re.compile(r'https?://(?:[a-zA-Z]|[0-9]|[$-_@.&+~]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', re.I) -opt_out = ["#yogscast", "#mturk", "#europa", "#cryptos"] +opt_out = [] HEADERS = { 'Accept-Language': 'en-US,en;q=0.5', diff --git a/plugins/quote.py b/plugins/quote.py index 122a047b4..871137369 100644 --- a/plugins/quote.py +++ b/plugins/quote.py @@ -152,8 +152,7 @@ def get_quote_by_chan(db, chan, num=False): def quote(text, nick, chan, db, notice): """[#chan] [nick] [#n] OR add - gets the [#n]th quote by (defaulting to random) OR adds as a quote for in the caller's channel""" - if chan in ["##partymansion", "#foreveralone"]: - return + add = re.match(r"add[^\w@]+(\S+?)>?\s+(.*)", text, re.I) retrieve = re.match(r"(\S+)(?:\s+#?(-?\d+))?$", text) retrieve_chan = re.match(r"(#\S+)\s+(\S+)(?:\s+#?(-?\d+))?$", text) From bfc4a9a9eccf9a81c3a331faedbd8ccfd69424a9 Mon Sep 17 00:00:00 2001 From: Andrew Edwards Date: Thu, 7 Dec 2017 14:30:23 -0500 Subject: [PATCH 85/87] remove optin for penis.py --- plugins/penis.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/plugins/penis.py b/plugins/penis.py index 8bdd2488b..25461c49e 100644 --- a/plugins/penis.py +++ b/plugins/penis.py @@ -7,14 +7,10 @@ head = ['D', 'Q', '>', '|\u2283' '\u22d1', '\u22d9', '\u22d7'] emission = ['~ ~ ~ ~', '~ * ~ &', '', '*~* *~* %'] bodypart = ['face', 'glasses', 'thigh', 'tummy', 'back', 'hiney', 'hair', 'boobs', 'tongue'] -optin = ['#conversations', '#thelair', '#conversationsmods', '#thelairmods', '#nosleepooc', '#downthepub', '#misunderstood', '##flotwig', '##partymansion', '#redditsquaredcircle', '#memenetics', '#nofear', '#pinkonwednesdays', '#banwomen', '#groove', '#grace', '#srotd', '#letsfilmtomorrow', '##doctorwho', '##neopets', '#dppafterhours', '#destinythegame', '#dc', '#foreveralone', '#britishpolitics', '#protectandserve', '##gonzobot', '#mturk', '#shenanigans', '#shenanigansmods', '#private256', '#tretki', '#breakingparents', '#torontomods', '#legaladvice', '#breakingdad', '#goml', '#linuxmasterrace', '#legaladvicegonewild', '#mnfh_nsfw', '#penis', '#guildrs', '##movienight', '#destroyersofworlds', '#thebatcave', '#notcuntparents', '#casualab', '#the_donald','#sigh', '#ems', '##ils', '#disputedzone', '#hotelcraft', '#luvduck', '#bagelsexual', '#aspergers-afterdark', '#vault108', '#burlington', '#psychic', '#psychicnsfw', '#offtopic', '#bolamod', '##the-lair', '#psychicdumb', '#irrationalfears','#psychicmoderators', '#portland', '#psychiccheeto', '#metalgigsscotland', '#psychicart', '##prolesftw','#duckfuck', '#textfriends', '#nightaudit'] @hook.command("penis", "bepis", autohelp=False) -def penis(text, message, chan, notice, nick): +def penis(text, message, nick): """much dongs, very ween, add a user nick as an arguement for slightly different 'output'""" - if chan not in optin and '#' in chan: - notice("this channel does not have access to this command.", nick) - return if not text: message("{}{}{}".format(random.choice(balls), random.choice(shaft), random.choice(head))) else: From e8fd4ef0ee0c8a5c91b19153963fb49654df60c4 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Tue, 12 Dec 2017 18:35:31 -0600 Subject: [PATCH 86/87] Fix NameError in horoscope.py --- plugins/horoscope.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/horoscope.py b/plugins/horoscope.py index d7c62761d..88f4e6fd0 100644 --- a/plugins/horoscope.py +++ b/plugins/horoscope.py @@ -16,7 +16,7 @@ @hook.command(autohelp=False) -def horoscope(text, db, bot, notice, nick, reply): +def horoscope(text, db, bot, notice, nick, reply, message): """ - get your horoscope""" signs = { 'aries': '1', From 3351eeb412717b6a61ae5b01b233ed348adc38ee Mon Sep 17 00:00:00 2001 From: ctrlshftn Date: Wed, 10 Jan 2018 21:57:08 -0500 Subject: [PATCH 87/87] Prevent Snoonet Bots from triggering ducks Checking for "snoonet/bot/" in the host before incrementing Message Counter or adding the host to the list of unique hosts because all snoonet bots contain this prefix in their vhost. Checking for "/bot/" can also be done to avoid other known bots from triggering a duck. --- plugins/duckhunt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/duckhunt.py b/plugins/duckhunt.py index e0cbd5d04..f9169f5ee 100644 --- a/plugins/duckhunt.py +++ b/plugins/duckhunt.py @@ -116,7 +116,7 @@ def incrementMsgCounter(event, conn): global game_status if event.chan in opt_out: return - if game_status[conn.name][event.chan]['game_on'] == 1 and game_status[conn.name][event.chan]['duck_status'] == 0: + if game_status[conn.name][event.chan]['game_on'] == 1 and game_status[conn.name][event.chan]['duck_status'] == 0 and "snoonet/bot/" not in event.host: game_status[conn.name][event.chan]['messages'] += 1 if event.host not in game_status[conn.name][event.chan]['masks']: game_status[conn.name][event.chan]['masks'].append(event.host)