Esempio n. 1
0
    def _message(self, req):
        output = Output()

        for bot in bots.all():
            code = bot['code']
            try:
                env = Env(code, bot['name'], bot['user'])
                env.onMessage(req['name'], req['message'])
                bots.update_lastsaid(bot['name'], env.output.lastsaid)
                output.combine(env.output)
            except Exception as e:
                res = self._removebot(bot, e)
                output.pms.update(res['pms'])
                continue
        return output.serialize()
Esempio n. 2
0
    def _removebot(self, req, e=None):
        name = req['name']
        bot = bots.get(name)
        user = bot['user']
        code = bot['code']

        output = Output()

        # remove the bot
        if e:
            m = 'ERROR in bot `{0}`: {1}\n{2}'.format(name,
                                                      str(e),
                                                      traceback.format_exc())
            output.pms.setdefault(user, []).append(m)

        m = ('Bot `{0}` was killed due to errors.\n' +
             'Here lies its code:\n{1}').format(name, code)
        output.pms[user].append(m)

        bots.remove(name)

        return output.serialize()