Streams are file transferts. It can be used to store documents, index them, send generated content on the fly etc.
10.1. Waiting for incoming file transferts¶
The bot can be send files from the users. You just have to implement the
callback_stream() method on your plugin to be notified for new incoming file
Note: note all backends supports this, check if it has been correctly implemented from the backend itself.
For example, getting the initiator of the transfer and the content, see
more info about the various fields.
from errbot import BotPlugin, botcmd class PluginExample(BotPlugin): def callback_stream(self, stream): self.send(stream.identifier, "File request from :" + str(stream.identifier)) stream.accept() self.send(stream.identifier, "Content:" + str(stream.fsource.read()))
10.2. Sending a file to a user or a room¶
You can use
send_stream_request() to initiate a transfer:
stream = self.send_stream_request(msg.frm, open('/tmp/myfile.zip', 'r'), name='bills.zip', stream_type='application/zip')
The returned stream object can be used to monitor the progress of the transfer with stream.status, stream.transfered etc...
Stream for more details.