Exemplo n.º 1
0
Arquivo: tags.py Projeto: jellz/jetski
    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'))
Exemplo n.º 2
0
    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))