def archive(self, event, size=50, mode=None, user=None, channel=None): if 0 > size >= 15000: raise CommandFail('too many messages must be between 1-15000') q = Message.select(Message.id).join(User).order_by(Message.id.desc()).limit(size) if mode in ('all', 'channel'): q = q.where((Message.channel_id == (channel or event.channel).id)) else: q = q.where( (Message.author_id == (user if isinstance(user, (int, long)) else user.id)) & (Message.guild_id == event.guild.id) ) archive = MessageArchive.create_from_message_ids([i.id for i in q]) event.msg.reply('OK, archived {} messages at {}'.format(len(archive.message_ids), archive.url))
def on_message_delete_bulk(self, event): channel = self.state.channels.get(event.channel_id) if not channel: return if event.guild.id in self.hushed: return if channel in event.config.ignored_channels: return archive = MessageArchive.create_from_message_ids(event.ids) self.log_action(Actions.MESSAGE_DELETE_BULK, event, log=archive.url, channel=channel, count=len(event.ids))
def archive(aid, fmt): try: archive = MessageArchive.select().where( MessageArchive.archive_id == aid).get() except MessageArchive.DoesNotExist: return 'Invalid or Expires Archive ID', 404 mime_type = None if fmt == 'json': mime_type == 'application/json' elif fmt == 'txt': mime_type = 'text/plain' elif fmt == 'csv': mime_type = 'text/csv' res = make_response(archive.encode(fmt)) res.headers['Content-Type'] = mime_type return res
def archive(aid, fmt): try: archive = MessageArchive.select().where( (MessageArchive.archive_id == aid) & (MessageArchive.expires_at > datetime.utcnow())).get() except MessageArchive.DoesNotExist: return 'Invalid or Expires Archive ID', 404 mime_type = None if fmt == 'json': mime_type = 'application/json' elif fmt == 'txt': mime_type = 'text/plain' elif fmt == 'csv': mime_type = 'text/csv' if fmt == 'html': return render_template('archive.html') res = make_response(archive.encode(fmt)) res.headers['Content-Type'] = mime_type return res