aboutsummaryrefslogtreecommitdiff
path: root/modules/quotes.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/quotes.py')
-rw-r--r--modules/quotes.py36
1 files changed, 23 insertions, 13 deletions
diff --git a/modules/quotes.py b/modules/quotes.py
index a843bdfb..e323cc9b 100644
--- a/modules/quotes.py
+++ b/modules/quotes.py
@@ -63,22 +63,30 @@ class Module(ModuleManager.BaseModule):
category)
found_target = None
+ found_quote = None
if not remove_quote == None:
- remove_quote_lower = remove_quote.lower()
+ remove_quote_lower = remove_quote.lower().strip()
for nickname, time_added, quote, target in quotes[:]:
- if quote.lower() == remove_quote_lower:
- quotes.remove([nickname, time_added, quote])
+ if remove_quote_lower in quote.lower().strip():
found_target = target
+ found_quote = [nickname, time_added, quote]
message = "Removed quote from '%s'"
break
else:
if quotes:
- quote = quotes.pop(-1)
- found_target = quote[-1]
+ nickname, time_added, quote, target = quotes.pop(-1)
+
+ found_target = target
+ found_quote = [nickname, time_added, quote]
message = "Removed last '%s' quote"
if not message == None:
- self._set_quotes(found_target, category, quotes)
+ target_quotes = self._get_quotes(found_target, category)
+ target_quotes.remove(found_quote)
+ self._set_quotes(found_target, category, target_quotes)
+
+ _, _, quote = found_quote
+ message = f"{message} ({quote})"
event["stdout"].write(message % category)
else:
event["stderr"].write("Quote not found")
@@ -89,6 +97,10 @@ class Module(ModuleManager.BaseModule):
@utils.kwarg("usage", "<category> [= <search>]")
def quote(self, event):
category, search = self.category_and_quote(event["args"])
+ if event["server"].has_user(category):
+ category = event["server"].get_user_nickname(
+ event["server"].get_user(category).get_id())
+
quotes = event["server"].get_setting("quotes-%s" % category, [])
if event["is_channel"]:
quotes += self._get_quotes(event["target"], category)
@@ -122,28 +134,26 @@ class Module(ModuleManager.BaseModule):
raise utils.EventError(
"Please provide a number between 1 and 3")
- target = event["args_split"][0]
- lines = event["target"].buffer.find_many_from(target, line_count)
+ target_user = event["args_split"][0]
+ lines = event["target"].buffer.find_many_from(target_user, line_count)
if lines:
lines.reverse()
target = event["server"]
if event["target"].get_setting("channel-quotes", False):
target = event["target"]
- quotes = self._get_quotes(target, target)
-
lines_str = []
for line in lines:
lines_str.append(line.format())
text = " ".join(lines_str)
- quotes.append([event["user"].name, int(time.time()), text])
-
quote_category = line.sender
if event["server"].has_user(quote_category):
- account = event["server"].get_user_nickname(
+ quote_category = event["server"].get_user_nickname(
event["server"].get_user(quote_category).get_id())
+ quotes = self._get_quotes(target, quote_category)
+ quotes.append([event["user"].name, int(time.time()), text])
self._set_quotes(target, quote_category, quotes)
event["stdout"].write("Quote added")