def on_tags_create(self, event, name, content): if re.search(r'<a?:\S+:[0-9]+>', name): raise CommandFail('tag names cannot contain emotes') name = S(name) import_tag = re.match(r'^import:([a-z]+)$', content, re.I) if import_tag: remote = import_tag.group(1).lower() r = requests.get(self.remote_url.format(remote)) try: r.raise_for_status() except requests.HTTPError: raise CommandFail('{}not found'.format(remote)) content = self.import_parser.search(r.content) if not content: raise CommandFail( 'remote tag `{}` is malformed - please tell Rawgoat staff'. format(remote)) content = content.group(1).decode('utf8').strip('`\n') if not self.source_re.search(content): content = u'{{source:{}}}{}'.format(remote, content) else: content = self.source_re.sub('', content) data = {'here': '@here', 'everyone': '@everyone'} content = self.replace_variables(content, data) if len(content) > event.config.max_tag_length: raise CommandFail( 'tag content is too long (max {} characters)'.format( event.config.max_tag_length)) if self.fetch_tag(name, event.guild.id): raise CommandFail('a tag by that name already exists') _, created = Tag.get_or_create(guild_id=event.guild.id, author_id=event.author.id, name=name, content=content) raise CommandSuccess(u'ok, your tag named `{}` has been {}'.format( name, 'imported' if import_tag else 'created'))
def on_tags_create(self, event, name, content): name = S(name) content = S(content) if len(content) > event.config.max_tag_length: raise CommandFail('tag content is too long (max {} characters)'.format(event.config.max_tag_length)) _, created = Tag.get_or_create( guild_id=event.guild.id, author_id=event.author.id, name=name, content=content ) if not created: raise CommandFail('a tag by that name already exists') raise CommandSuccess('ok, your tag named `{}` has been created'.format(name))