Пример #1
0
    def command_setup(self, event):
        if not event.guild:
            return event.msg.reply(
                ':warning: this command can only be used in servers')

        # Make sure we're not already setup
        if event.guild.id in self.guilds:
            return event.msg.reply(':warning: this server is already setup')

        global_admin = rdb.sismember('global_admins', event.author.id)

        # Make sure this is the owner of the server
        if not global_admin:
            if not event.guild.owner_id == event.author.id:
                return event.msg.reply(
                    ':warning: only the server owner can setup rowboat')

        # Make sure we have admin perms
        m = event.guild.members.select_one(id=self.state.me.id)
        if not m.permissions.administrator and not global_admin:
            return event.msg.reply(
                ':warning: bot must have the Administrator permission')

        guild = Guild.setup(event.guild)
        rdb.srem(GUILDS_WAITING_SETUP_KEY, str(event.guild.id))
        self.guilds[event.guild.id] = guild
        event.msg.reply(':ok_hand: successfully loaded configuration')
Пример #2
0
 def guild_unwhitelist(self, event, guild):
     rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild))
     event.msg.reply(
         'Ok, I\'ve made sure guild %s is no longer in the whitelist' %
         guild)
     Guild.update(whitelist=[]).where(
         str(Guild.guild_id) == str(guild)).execute()
Пример #3
0
def rmv_global_admin(user_id):
    from rowboat.redis import rdb
    from rowboat.models.user import User
    init_db(ENV)
    rdb.srem('global_admins', user_id)
    User.update(admin=False).where(User.user_id == user_id).execute()
    print 'Ok, removed {} as a global admin'.format(user_id)
Пример #4
0
    def wait_for_actions(self):
        ps = rdb.pubsub()
        ps.subscribe('actions')

        for item in ps.listen():
            if item['type'] != 'message':
                continue

            data = json.loads(item['data'])
            if data['type'] == 'GUILD_UPDATE' and data['id'] in self.guilds:
                with self.send_control_message() as embed:
                    embed.title = u'Reloaded config for {}'.format(
                        self.guilds[data['id']].name)

                self.log.info(u'Reloading guild %s',
                              self.guilds[data['id']].name)

                # Refresh config, mostly to validate
                try:
                    config = self.guilds[data['id']].get_config(refresh=True)

                    # Reload the guild entirely
                    self.guilds[data['id']] = Guild.with_id(data['id'])

                    # Update guild access
                    self.update_rowboat_guild_access()

                    # Finally, emit the event
                    self.emitter.emit('GUILD_CONFIG_UPDATE',
                                      self.guilds[data['id']], config)
                except:
                    self.log.exception(u'Failed to reload config for guild %s',
                                       self.guilds[data['id']].name)
                    continue
            elif data['type'] == 'RESTART':
                self.log.info('Restart requested, signaling parent')
                os.kill(os.getppid(), signal.SIGUSR1)
            elif data['type'] == 'GUILD_DELETE':
                name = self.guilds[data['id']].name if self.guilds.has_key(
                    data['id']) else Guild.with_id(data['id']).name
                with self.send_control_message() as embed:
                    embed.color = 0xff6961
                    embed.title = u'Guild Force Deleted {}'.format(name, )

                try:
                    self.log.info(u'Leaving guild %s', name)
                    self.bot.client.api.users_me_guilds_delete(
                        guild=data['id'])
                except:
                    self.log.info(u'Cannot leave guild %s, bot not in guild',
                                  name)
                finally:
                    self.log.info(u'Disabling guild %s', name)
                    Guild.update(enabled=False).where(
                        Guild.guild_id == data['id']).execute()

                    self.log.info(u'Unwhilelisting guild %s', name)
                    rdb.srem(GUILDS_WAITING_SETUP_KEY, str(data['id']))
Пример #5
0
    def command_setup(self, event):
        if not event.guild:
            raise CommandFail('This command can only be used in servers')

        global_admin = rdb.sismember('global_admins', event.author.id)

        # Make sure this is the owner of the server
        if not global_admin:
            if not event.guild.owner_id == event.author.id:
                raise CommandFail('Only the server owner can setup speedboat')

        # Make sure we have admin perms
        m = event.guild.members.select_one(id=self.state.me.id)
        if not m.permissions.administrator and not global_admin:
            raise CommandFail('Bot must have the Administrator permission')

        guild = Guild.setup(event.guild)
        rdb.srem(GUILDS_WAITING_SETUP_KEY, str(event.guild.id))
        self.guilds[event.guild.id] = guild
        raise CommandSuccess('Successfully loaded configuration')
Пример #6
0
 def guild_unwhitelist(self, event, guild):
     rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild))
     event.msg.reply(
         'Ok, I\'ve made sure guild %s is no longer in the whitelist' %
         guild)
Пример #7
0
 def guild_unwhitelist(self, event, guild):
     rdb.srem(GUILDS_WAITING_SETUP_KEY, str(guild))
     raise CommandSuccess(
         'Ok, I\'ve made sure guild %s is no longer in the whitelist' %
         guild)