emote.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:ax-cogs 作者: Aioxas 项目源码 文件源码
def check_emotes(self, message):
        # check if setting is on in this server
        # Let emotes happen in PMs always
        server = message.server

        # Filter unauthorized users, bots and empty messages
        if not (self.bot.user_allowed(message) and message.content):
            return

        # Don't respond to commands
        for m in self.bot.settings.get_prefixes(server):
            if message.content.startswith(m):
                return

        if server is not None:
            if server.id not in self.servers:
                # default off
                self.servers[server.id] = dict({"status": False})
                if "emotes" not in self.servers[server.id]:
                    self.servers[server.id]["emotes"] = dict()
                dataIO.save_json(self.data_path, self.servers)
            # emotes is off, so ignore
            if "status" not in self.servers[server.id]:
                self.servers[server.id] = dict({"status": False})
                if "emotes" not in self.servers[server.id]:
                    self.servers[server.id]["emotes"] = dict()
                dataIO.save_json(self.data_path, self.servers)
            if not self.servers[server.id]["status"]:
                return

        msg = message.content.lower().split()
        listed = []
        regexen = []
        for n in sorted(self.servers[server.id]["emotes"]):
            if not n[0].isalnum():
                regexen.append(re.compile(r"\B"+n+r"\b"))
            else:
                regexen.append(re.compile(r"\b"+n+r"\b"))

        for w, r in itertools.product(msg, regexen):
            match = r.search(w)
            if match:
                listed.append(self.servers[server.id]["emotes"][match.group(0)])

        pnglisted = list(filter(lambda n: not n.endswith('.gif'), listed))
        giflisted = list(filter(lambda n: n.endswith('.gif'), listed))
        if pnglisted and len(pnglisted) > 1:
            ims = self.imgprocess(pnglisted)
            await self.bot.send_file(message.channel, self.emote+ims)
        elif pnglisted:
            await self.bot.send_file(message.channel, self.emote+pnglisted[0])
        if giflisted:
            for ims in giflisted:
                await self.bot.send_file(message.channel, self.emote+ims)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号