From 22ee129ca68db97fe8c72a6754e438dff79f8d78 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sat, 8 Sep 2018 22:01:47 +0100 Subject: Clean up combining new.channel and __init__ channel bootstrapping --- modules/ducks.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/modules/ducks.py b/modules/ducks.py index 3881aaf8..bfa676fc 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -51,24 +51,19 @@ class Module(object): "duck?", "validate": Utils.bool_or_none}) - events.on("new.channel").hook(self.bootstrap) + events.on("new.channel").hook(self.new_channel) events.on("received").on("message").on("channel").hook( self.channel_message, priority=2) - self.bootstrap_lazy(events) - - def bootstrap_lazy(self, event): - servers = self.bot.servers - - for server in servers.values(): + for server in self.bot.servers.values(): for channel in server.channels.values(): self.bootstrap(channel) - def bootstrap(self, event): - channel = event["channel"] if hasattr(event, "channel") else event - + def new_channel(self, event): + self.bootstrap(event["channel"]) + def bootstrap(self, channel): self.init_game_var(channel) # getset ducks_enabled = channel.get_setting("ducks-enabled", False) -- cgit v1.3.1-10-gc9f91 From 69543c04db7e0612d161e6dd6ce91ce5d5cf477a Mon Sep 17 00:00:00 2001 From: dngfx Date: Sat, 8 Sep 2018 22:53:31 +0100 Subject: Make google.py show the search term in the results. --- modules/google.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/google.py b/modules/google.py index 99566ebe..f7ef398f 100644 --- a/modules/google.py +++ b/modules/google.py @@ -22,8 +22,8 @@ class Module(object): "num": 1, "gl": "gb"}, json=True) if page: if "items" in page and len(page["items"]): - event["stdout"].write(page["items"][0][ - "link"]) + event["stdout"].write("(" + Utils.bold(phrase) + ") " \ + + page["items"][0]["link"]) else: event["stderr"].write("No results found") else: -- cgit v1.3.1-10-gc9f91 From 11f7ebaa863a2907e58e978e1ad421f5b96fd9ec Mon Sep 17 00:00:00 2001 From: dongfix Date: Sun, 9 Sep 2018 01:19:00 +0100 Subject: Add channel prefix to .usage (So it shows .8ball instead of just 8ball , based on the channel's prefix) Updated ducks.py, more efficient code and style tweaks. --- modules/commands.py | 10 +++++++++- modules/ducks.py | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index 6cac8c43..fcd12847 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -190,12 +190,20 @@ class Module(object): event["stdout"].write("Commands: %s" % ", ".join(help_available)) def usage(self, event): + command_prefix = event["target"].get_setting("command-prefix", + event["server"].get_setting( + "command-prefix", + "!")) + command = event["args_split"][0].lower() if command in self.events.on("received").on( "command").get_children(): hooks = self.events.on("received").on("command").on(command).get_hooks() if hooks and "usage" in hooks[0].kwargs: - event["stdout"].write("Usage: %s %s" % (command, hooks[0].kwargs["usage"])) + event["stdout"].write("Usage: %s%s %s" % (command_prefix, + command, + hooks[0].kwargs[ + "usage"])) else: event["stderr"].write("No usage help available for %s" % command) else: diff --git a/modules/ducks.py b/modules/ducks.py index bfa676fc..da2283fc 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -303,16 +303,16 @@ class Module(object): enemy_nicks.append(user) enemy_ducks.append(enemies) - sentence = "Most Notorious Users -- " + sentence = "Duck Wranglers -- " + build = [] - length = len(enemy_nicks) if len(enemy_nicks) < 11 else 11 + length = len(enemy_nicks) if len(enemy_nicks) < 8 else 8 for i in range(0, length): - sentence += enemy_nicks[i] + " (" + str(enemy_ducks[i]) + ")" - if i < 10: - sentence += ", " + build.append(Utils.bold(enemy_nicks[i]) + " (" + + str(enemy_ducks[i]) + ")") - sentence = sentence[0:-2] + sentence += ", ".join(build) event["stdout"].write(sentence) @@ -335,15 +335,15 @@ class Module(object): friend_nicks.append(user) friend_ducks.append(friends) - sentence = "Friendliest Users -- " + sentence = "Duck Befrienders -- " - length = len(friend_nicks) if len(friend_nicks) < 11 else 11 + length = len(friend_nicks) if len(friend_nicks) < 8 else 8 + build = [] for i in range(0, length): - sentence += friend_nicks[i] + " (" + str(friend_ducks[i]) + ")" - if i < 10: - sentence += ", " + build.append(Utils.bold(friend_nicks[i]) + " (" + + str(friend_ducks[i]) + ")") - sentence = sentence[0:-2] + sentence += ", ".join(build) event["stdout"].write(sentence) -- cgit v1.3.1-10-gc9f91 From fb3fa55477942dcf8225216445948974b0f40ee4 Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 03:07:21 +0100 Subject: String formatting exists and it is a wonderful thing. --- modules/ducks.py | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/modules/ducks.py b/modules/ducks.py index da2283fc..255e9cf4 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -212,11 +212,11 @@ class Module(object): channel.set_user_setting(uid, "ducks-befriended", total_befriended) - event["stdout"].write( - "Aww! " + nick + " befriended a duck! You've befriended " + - Utils.bold( - str(total_befriended)) + " ducks in " + Utils.bold( - channel.name) + "!") + msg = "Aww! %s befriended a duck! You've befriended %s ducks in %s!" \ + % ( Utils.bold(nick), Utils.bold(total_befriended), + Utils.bold(channel.name) ) + + event["stdout"].write(msg) self.clear_ducks(channel) @@ -243,10 +243,11 @@ class Module(object): channel.set_user_setting(uid, "ducks-shot", total_shot) - event["stdout"].write( - "Pow! " + nick + " shot a duck! You've shot " + Utils.bold( - str(total_shot)) + " ducks in " + Utils.bold( - channel.name) + "!") + msg = "Pow! %s shot a duck! You've shot %s ducks in %s!" \ + % ( Utils.bold(nick), Utils.bold(total_shot), + Utils.bold(channel.name) ) + + event["stdout"].write(msg) self.clear_ducks(channel) @@ -279,11 +280,16 @@ class Module(object): else: total_poached += number - event["stdout"].write( - nick + ": " + str(total_poached) + " ducks killed (" + str( - channel_poached) + " in " + channel + "), and " + str( - total_friends) + " ducks befriended (" + str( - channel_friends) + " in " + channel + ")") + tf = total_friends + tp = total_poached + cp = channel_poached + cf = channel_friends + + msg = "%s ducks killed (%s in %s), and %s ducks befriended (%s in %s)" \ + % ( Utils.bold(tp), Utils.bold(cp), Utils.bold(channel), + Utils.bold(tf), Utils.bold(cf), Utils.bold(channel) ) + + event["stdout"].write(Utils.bold(nick) + ": " + msg) def duck_enemies(self, event): the_enemy = event["server"].find_all_user_channel_settings("ducks-shot") @@ -303,14 +309,14 @@ class Module(object): enemy_nicks.append(user) enemy_ducks.append(enemies) - sentence = "Duck Wranglers -- " + sentence = Utils.bold("Duck Wranglers: ") build = [] length = len(enemy_nicks) if len(enemy_nicks) < 8 else 8 for i in range(0, length): - build.append(Utils.bold(enemy_nicks[i]) + " (" - + str(enemy_ducks[i]) + ")") + build.append("%s (%s)" % (Utils.bold(enemy_nicks[i]), + enemy_ducks[i])) sentence += ", ".join(build) @@ -335,14 +341,15 @@ class Module(object): friend_nicks.append(user) friend_ducks.append(friends) - sentence = "Duck Befrienders -- " + sentence = Utils.bold("Duck Friends: ") length = len(friend_nicks) if len(friend_nicks) < 8 else 8 build = [] for i in range(0, length): - build.append(Utils.bold(friend_nicks[i]) + " (" - + str(friend_ducks[i]) + ")") + build.append("%s (%s)" % ( Utils.bold(friend_nicks[i]), + friend_ducks[i]) + ) sentence += ", ".join(build) -- cgit v1.3.1-10-gc9f91 From c8bbdddc595595336c64bd9a2f8db40e3b851f84 Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 03:39:29 +0100 Subject: FONT_RESET should be FONT_COLOR, also more string wizardry in ducks.py! --- modules/commands.py | 4 ++-- modules/ducks.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index fcd12847..d6b821f0 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -38,11 +38,11 @@ class Out(object): class StdOut(Out): def prefix(self): return "%s%s%s" % (Utils.color(Utils.COLOR_GREEN), - self.module_name, Utils.FONT_RESET) + self.module_name, Utils.FONT_COLOR) class StdErr(Out): def prefix(self): return "%s!%s%s" % (Utils.color(Utils.COLOR_RED), - self.module_name, Utils.FONT_RESET) + self.module_name, Utils.FONT_COLOR) class Module(object): def __init__(self, bot, events, exports): diff --git a/modules/ducks.py b/modules/ducks.py index 255e9cf4..1d528247 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -315,8 +315,10 @@ class Module(object): length = len(enemy_nicks) if len(enemy_nicks) < 8 else 8 for i in range(0, length): - build.append("%s (%s)" % (Utils.bold(enemy_nicks[i]), - enemy_ducks[i])) + nick = Utils.prevent_highlight(enemy_nicks[i]) + build.append("%s (%s)" \ + % (Utils.bold(nick), + enemy_ducks[i])) sentence += ", ".join(build) @@ -347,8 +349,10 @@ class Module(object): build = [] for i in range(0, length): - build.append("%s (%s)" % ( Utils.bold(friend_nicks[i]), - friend_ducks[i]) + nick = Utils.prevent_highlight(friend_nicks[i]) + build.append("%s (%s)" \ + % ( Utils.bold(nick), + friend_ducks[i]) ) sentence += ", ".join(build) -- cgit v1.3.1-10-gc9f91 From c626a9d047a01473d62a0e2835c0d156751629a2 Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 06:34:50 +0100 Subject: A shakespear insult generator, with optional target. Because why not? --- modules/shakespeare.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 modules/shakespeare.py diff --git a/modules/shakespeare.py b/modules/shakespeare.py new file mode 100644 index 00000000..db512337 --- /dev/null +++ b/modules/shakespeare.py @@ -0,0 +1,74 @@ +import random +import Utils + +INSULT_INTRO = ["Thou art", "Ye", "Thou", "Thy", "Thee"] + +INSULT_PART_1 = ["artless", "bawdy", "beslubbering", "bootless", "churlish", + "cockered", "clouted", "craven", "currish", "dankish", + "dissembling", + "droning", "errant", "fawning", "fobbing", "forward", "frothy", + "gleeking", "goatish", "gorbellied", "impertinent", + "infectious", + "jarring", "loggerheaded", "lumpish", "mammering", "mangled", + "mewling", "paunchy", "pribbling", "puking", "puny", + "qualling", + "rank", "reeky", "roguish", "ruttish", "saucy", "spleeny", + "spongy", + "surly", "tottering", "unmuzzled", "vain", "venomed", + "villainous", + "warped", "wayward", "weedy", "yeast"] + +INSULT_PART_2 = ["base-court", "bat-fowling", "beef-witted", "beetle-headed", + "boil-brained", "clapper-clawed", "clay-brained", + "common-kissing", + "crook-pated", "dismal-dreaming", "dizzy-eyed", "doghearted", + "dread-bolted", "earth-vexing", "elf-skinned", "fat-kidneyed", + "fen-sucked", "flap-mouthed", "fly-bitten", "folly-fallen", + "fool-born", "full-gorged", "guts-griping", "half-faced", + "hasty-witted", "hedge-born", "hell-hated", "idle-headed", + "ill-breeding", "ill-nurtured", "knotty-pated", "milk-livered", + "motley-minded", "onion-eyed", "plume-plucked", "pottle-deep", + "pox-marked", "reeling-ripe", "rough-hewn", "rude-growing", + "rump-fed", "shard-borne", "sheep-biting", "spur-galled", + "swag-bellied", "tardy-gaited", "tickle-brained", + "toad-spotted", + "unchin-snouted", "weather-bitten"] + +INSULT_PART_3 = ["apple-john", "baggage", "barnacle", "bladder", "boar-pig", + "bugbear", "bum-bailey", "canker-blossom", "clack-dish", + "clotpole", + "coxcomb", "codpiece", "death-token", "dewberry", + "flap-dragon", + "flax-wench", "flirt-gill", "foot-licker", "fustilarian", + "giglet", + "gudgeon", "haggard", "harpy", "hedge-pig", "horn-beast", + "hugger-mugger", "joithead", "lewdster", "lout", "maggot-pie", + "malt-worm", "mammet", "measle", "minnow", "miscreant", + "moldwarp", + "mumble-news", "nut-hook", "pigeon-egg", "pignut", "puttock", + "pumpion", "ratsbane", "scut", "skainsmate", "strumpet", + "varlot", + "vassal", "whey-face", "wagtail"] + + +class Module(object): + + def __init__(self, bot, events, exports): + self.bot = bot + self.events = events + + events.on("received").on("command").on("insult").hook( + self.dispense_insult) + + def dispense_insult(self, event): + insult = [random.choice(INSULT_INTRO), random.choice(INSULT_PART_1), + random.choice(INSULT_PART_2), random.choice(INSULT_PART_3)] + + insult = " ".join(insult) + target = "" + + if event["args_split"]: + target = Utils.bold(event["server"].get_user( + event["args_split"][0]).nickname) + ", " + + event["stdout"].write(target + insult) -- cgit v1.3.1-10-gc9f91 From 20339d0a648ac9bf14c25108b049e1092bb50a0f Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 07:38:14 +0100 Subject: Grammar fix --- modules/shakespeare.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/shakespeare.py b/modules/shakespeare.py index db512337..38b2ac49 100644 --- a/modules/shakespeare.py +++ b/modules/shakespeare.py @@ -1,7 +1,7 @@ import random import Utils -INSULT_INTRO = ["Thou art", "Ye", "Thou", "Thy", "Thee"] +INSULT_INTRO = ["Thou art a", "Ye", "Thou", "Thy", "Thee"] INSULT_PART_1 = ["artless", "bawdy", "beslubbering", "bootless", "churlish", "cockered", "clouted", "craven", "currish", "dankish", @@ -71,4 +71,4 @@ class Module(object): target = Utils.bold(event["server"].get_user( event["args_split"][0]).nickname) + ", " - event["stdout"].write(target + insult) + event["stdout"].write(target + insult + "!") -- cgit v1.3.1-10-gc9f91 From 2211cb054204a4f1f6a4552853bc307c697de05c Mon Sep 17 00:00:00 2001 From: dngfx Date: Sun, 9 Sep 2018 08:59:36 +0100 Subject: Fix a few niggles --- modules/commands.py | 6 +++++- modules/ducks.py | 33 ++++++++++++++++----------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index d6b821f0..2567880b 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -190,10 +190,14 @@ class Module(object): event["stdout"].write("Commands: %s" % ", ".join(help_available)) def usage(self, event): - command_prefix = event["target"].get_setting("command-prefix", + if event["is_channel"]: + command_prefix = event["target"].get_setting("command-prefix", event["server"].get_setting( "command-prefix", "!")) + else: + command_prefix = "" + command = event["args_split"][0].lower() if command in self.events.on("received").on( diff --git a/modules/ducks.py b/modules/ducks.py index 1d528247..93f0e2a5 100644 --- a/modules/ducks.py +++ b/modules/ducks.py @@ -1,6 +1,7 @@ import random from operator import itemgetter from time import time +import EventManager import Utils @@ -14,6 +15,7 @@ DUCK_MESSAGE_RARE = ["beep boop!", "QUACK QUACK QUACK QUACK QUACK!!", "HONK!", DUCK_MINIMUM_MESSAGES = 10 DUCK_MINIMUM_UNIQUE = 3 + class Module(object): def __init__(self, bot, events, exports): @@ -21,14 +23,11 @@ class Module(object): self.events = events events.on("received.command.bef").hook(self.befriend, - priority=1, - help="Befriend a " - "duck!") + priority=EventManager.PRIORITY_HIGH, + help="Befriend a duck!") events.on("received.command.bang").hook(self.shoot, - priority=1, - help="Shoot a " - "duck! " - "Meanie.", ) + priority=EventManager.PRIORITY_HIGH, + help="Shoot a duck! Meanie." ) # events.on("received").on("command").on("decoy").hook(self.set_decoy, # help="Be a # sneaky fellow @@ -53,9 +52,8 @@ class Module(object): events.on("new.channel").hook(self.new_channel) - events.on("received").on("message").on("channel").hook( - self.channel_message, priority=2) + self.channel_message) for server in self.bot.servers.values(): for channel in server.channels.values(): @@ -63,6 +61,7 @@ class Module(object): def new_channel(self, event): self.bootstrap(event["channel"]) + def bootstrap(self, channel): self.init_game_var(channel) # getset @@ -213,8 +212,8 @@ class Module(object): channel.set_user_setting(uid, "ducks-befriended", total_befriended) msg = "Aww! %s befriended a duck! You've befriended %s ducks in %s!" \ - % ( Utils.bold(nick), Utils.bold(total_befriended), - Utils.bold(channel.name) ) + % (Utils.bold(nick), Utils.bold(total_befriended), + Utils.bold(channel.name)) event["stdout"].write(msg) @@ -244,8 +243,8 @@ class Module(object): channel.set_user_setting(uid, "ducks-shot", total_shot) msg = "Pow! %s shot a duck! You've shot %s ducks in %s!" \ - % ( Utils.bold(nick), Utils.bold(total_shot), - Utils.bold(channel.name) ) + % (Utils.bold(nick), Utils.bold(total_shot), + Utils.bold(channel.name)) event["stdout"].write(msg) @@ -286,8 +285,8 @@ class Module(object): cf = channel_friends msg = "%s ducks killed (%s in %s), and %s ducks befriended (%s in %s)" \ - % ( Utils.bold(tp), Utils.bold(cp), Utils.bold(channel), - Utils.bold(tf), Utils.bold(cf), Utils.bold(channel) ) + % (Utils.bold(tp), Utils.bold(cp), Utils.bold(channel), + Utils.bold(tf), Utils.bold(cf), Utils.bold(channel)) event["stdout"].write(Utils.bold(nick) + ": " + msg) @@ -351,8 +350,8 @@ class Module(object): for i in range(0, length): nick = Utils.prevent_highlight(friend_nicks[i]) build.append("%s (%s)" \ - % ( Utils.bold(nick), - friend_ducks[i]) + % (Utils.bold(nick), + friend_ducks[i]) ) sentence += ", ".join(build) -- cgit v1.3.1-10-gc9f91