def channel_message(self, event): if event["target"].get_setting("auto-title", False): event.eat() url = utils.http.url_sanitise(event["match"].group(0)) code, title = self._get_title(event["server"], event["target"], url) if code == 200 and title: message = title if event["target"].get_setting("auto-title-first", False): setting = "url-last-%s" % self._url_hash(url) first_details = event["target"].get_setting(setting, None) if first_details: first_nickname, first_timestamp, _ = first_details timestamp_parsed = utils.iso8601_parse(first_timestamp) timestamp_human = utils.datetime_human(timestamp_parsed) message = "%s (first posted by %s at %s)" % (title, first_nickname, timestamp_human) else: event["target"].set_setting(setting, [event["user"].nickname, utils.iso8601_format_now(), url]) event["stdout"].write(message) if code == -2: self.log.debug("Not showing title for %s, too similar", [url])
def channel_message(self, event): """ :command: title :pattern-url: 1 """ if event["target"].get_setting("auto-title", False): event.eat() url = event["match"].group(0) title = self._get_title(event["target"], event["match"].group(0)) if title: message = title if event["target"].get_setting("auto-title-first", False): setting = "url-last-%s" % self._url_hash(url) first_details = event["target"].get_setting(setting, None) if first_details: first_nickname, first_timestamp, _ = first_details timestamp_parsed = utils.iso8601_parse(first_timestamp) timestamp_human = utils.datetime_human( timestamp_parsed) message = "%s (first posted by %s at %s)" % ( title, first_nickname, timestamp_human) else: event["target"].set_setting(setting, [ event["user"].nickname, utils.iso8601_format_now(), url ]) event["stdout"].write(message)
def channel_message(self, event): match = re.search(utils.http.REGEX_URL, event["message"]) if match and event["channel"].get_setting("auto-title", False): is_ignored_f = short_url = self.exports.get_one("is-ignored", lambda _1, _2: False) if is_ignored_f(event["user"], "title"): return url = match.group(0) title = self._get_title(event["channel"], match.group(0)) if title: message = title if event["channel"].get_setting("auto-title-first", False): setting = "url-last-%s" % self._url_hash(url) first_details = event["channel"].get_setting(setting, None) if first_details: first_nickname, first_timestamp, _ = first_details timestamp_parsed = utils.iso8601_parse(first_timestamp) timestamp_human = utils.datetime_human(timestamp_parsed) message = "%s (first posted by %s at %s)" % (title, first_nickname, timestamp_human) else: event["channel"].set_setting(setting, [event["user"].nickname, utils.iso8601_format_now(), url]) self.events.on("send.stdout").call(target=event["channel"], message=message, module_name="Title", server=event["server"])
def channel_message(self, event): match = re.search(utils.http.REGEX_URL, event["message"]) if match and event["channel"].get_setting("auto-title", False): is_ignored_f = short_url = self.exports.get_one( "is-ignored", lambda _1, _2: False) if is_ignored_f(event["user"], "title"): return url = match.group(0) title = self._get_title(event["channel"], match.group(0)) if title: message = title if event["channel"].get_setting("auto-title-first", False): setting = "url-last-%s" % self._url_hash(url) first_details = event["channel"].get_setting(setting, None) if first_details: first_nickname, first_timestamp, _ = first_details timestamp_parsed = utils.iso8601_parse(first_timestamp) timestamp_human = utils.datetime_human( timestamp_parsed) message = "%s (first posted by %s at %s)" % ( title, first_nickname, timestamp_human) else: event["channel"].set_setting(setting, [ event["user"].nickname, utils.iso8601_format_now(), url ]) self.events.on("send.stdout").call(target=event["channel"], message=message, module_name="Title", server=event["server"])
def add_badge(self, event): """ :help: Add a badge with today's date :usage: <badge> """ badge = event["args"] badge_lower = badge.lower() badges = self._get_badges(event["user"]) for badge_name in badges.keys(): if badge_name.lower() == badge_lower: raise utils.EventError("You already have a '%s' badge" % badge) badges[badge] = utils.iso8601_format_now() self._set_badges(event["user"], badges) event["stdout"].write("Added '%s' badge" % badge)
def reset_badge(self, event): """ :help: Reset a badge to today's date :usage: <badge> """ badge = event["args"] badge_lower = badge.lower() badges = self._get_badges(event["user"]) found_badge = self._find_badge(badges, badge) if found_badge: badges[found_badge] = utils.iso8601_format_now() self._set_badges(event["user"], badges) event["stdout"].write("Reset badge '%s'" % found_badge) else: event["stderr"].write("You have no '%s' badge" % badge)
def to(self, event): """ :help: Relay a message to a user the next time they talk in this channel :usage: <nickname> <message> """ target_user = event["server"].get_user(event["args_split"][0]) messages = event["target"].get_user_setting(target_user.get_id(), "to", []) if len(messages) == 5: raise utils.EventError("Users can only have 5 messages stored") messages.append([event["user"].nickname, " ".join(event["args_split"][1:]), utils.iso8601_format_now()]) event["target"].set_user_setting(target_user.get_id(), "to", messages) event["stdout"].write("Message saved")
def to(self, event): """ :help: Relay a message to a user the next time they talk in this channel :usage: <nickname> <message> """ target_user = event["server"].get_user(event["args_split"][0]) messages = event["target"].get_user_setting(target_user.get_id(), "to", []) if len(messages) == 5: raise utils.EventError("Users can only have 5 messages stored") messages.append([ event["user"].nickname, " ".join(event["args_split"][1:]), utils.iso8601_format_now() ]) event["target"].set_user_setting(target_user.get_id(), "to", messages) event["stdout"].write("Message saved")
def _make_activity(self, content): timestamp = utils.iso8601_format_now() activity_id = self._random_id() self.bot.set_setting("ap-activity-%s" % activity_id, [content, timestamp]) return activity_id