前言
最近在学习Mirai(虽然以前也学了),然后在开发中遇到了文件发送的困惑
经过一点时间查阅文档,发现也没有那么难,算是第一次走进Mirai的源码分析了,特此记录下来。
分析
根据Mirai官方文档所示
完成发送文件的核心点就在于: RemoteFile (远程文件)接口
特地看看下面提供了那些可用的方法
public suspend fun upload(file: File): FileMessage = file.toExternalResource().use { upload(it) }
发现一个跟文件上传有关的方法,我们根据IDE 进入相关使用类
可以看到,ExternalResource有对该方法的应用
可以看到Contact调用了UploadFile方法,我们继续看
可以看到,该Contact调用了RemoteFile的Upload方法,resolve()是用来获取子文件夹的。
既然知道如何实现的,那我们可以有几种办法调用上传文件
温馨提示
FileSupported接口
为什么要特地单独提出来这个接口,细心的小伙伴会发现。
Contact调用的uploadFile方法中是走FileSupported接口
FileSupported接口源码注释也有提到:支持文件操作的 Contact. 目前仅 Group.
目前不支持Friends,意味着不能给朋友发送文件
注:FileMessage的实现类仅仅是用来储存文件信息