16#ifndef MIRAI_ADAPTOR_INTERFACE_HPP_
17#define MIRAI_ADAPTOR_INTERFACE_HPP_
36 template<
typename... Args>
using Callback = std::function<void(Args...)>;
100 virtual std::variant<FriendMessageEvent, GroupMessageEvent, TempMessageEvent, StrangerMessageEvent>
108 virtual std::vector<Group>
GroupList(
string SessionKey) = 0;
132 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
135 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
139 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
142 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
146 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
149 std::optional<MessageId_t> QuoteId = std::nullopt) = 0;
158 virtual std::vector<MessageChain>
RoamingMessages(
string SessionKey, std::time_t TimeStart,
159 std::time_t TimeEnd,
UID_t target) = 0;
163 virtual std::vector<GroupFileInfo>
FileList(
string SessionKey,
string id,
string path,
164 UID_t target, int64_t offset = 0, int64_t size = 0,
165 bool withDownloadInfo =
false) = 0;
169 bool withDownloadInfo =
false) = 0;
173 string directory) = 0;
179 virtual void FileMove(
string SessionKey,
string id,
string path,
UID_t target,
180 string TargetDirId,
string TargetDirPath) = 0;
189 string name,
string content) = 0;
199 std::function<
bool(
size_t offset, std::ostream& sink,
bool& finish)> ContentProvider) = 0;
211 std::function<
bool(
size_t offset, std::ostream& sink,
bool& finish)> ContentProvider) = 0;
222 std::function<
bool(
size_t offset, std::ostream& sink,
bool& finish)> ContentProvider) = 0;
230 virtual void Mute(
string SessionKey,
GID_t target,
QQ_t member, std::chrono::seconds time) = 0;
236 virtual void Kick(
string SessionKey,
GID_t target,
QQ_t member,
string message,
bool block) = 0;
255 std::optional<bool> AllowConfessTalk = std::nullopt,
256 std::optional<bool> AllowMemberInvite = std::nullopt,
257 std::optional<bool> AutoApprove = std::nullopt,
258 std::optional<bool> AllowAnonymousChat = std::nullopt) = 0;
272 virtual std::vector<GroupAnnouncement>
AnnoList(
string SessionKey,
GID_t target, int64_t offset = 0,
273 int64_t size = 0) = 0;
277 string url,
string path,
string base64,
278 bool ToNewMember =
false,
bool pinned =
false,
bool ShowEditCard =
false,
279 bool ShowPopup =
false,
bool RequireConfirm =
false) = 0;
287 int operate,
string message) = 0;
291 int operate,
string message) = 0;
295 GID_t GroupId,
int operate,
string message) = 0;
304 virtual void CmdRegister(
string SessionKey,
string name, std::vector<string> alias,
305 string usage,
string description) = 0;
309 virtual string CallAPI(
const string& path,
const string& method,
const string& data) = 0;
virtual void MuteAll(string SessionKey, GID_t target)=0
全体禁言
virtual std::vector< User > FriendList(string SessionKey)=0
获取好友列表
std::function< void(Args...)> Callback
virtual void RespBotInvitedJoinGroupRequestEvent(string SessionKey, int64_t EventId, QQ_t FromId, GID_t GroupId, int operate, string message)=0
Bot被邀请入群申请
virtual MiraiImage UploadImageChunked(string SessionKey, string type, std::function< bool(size_t offset, std::ostream &sink, bool &finish)> ContentProvider)=0
分块上传图片
virtual void FileRename(string SessionKey, string id, string path, UID_t target, string name)=0
重命名文件
virtual void CmdExecute(string SessionKey, MessageChain &&command)=0
执行命令
virtual void DeleteFriend(string SessionKey, QQ_t target)=0
删除好友
virtual std::vector< GroupMember > MemberList(string SessionKey, GID_t target)=0
获取群成员列表
virtual void Recall(string SessionKey, MessageId_t id, UID_t target)=0
撤回消息
virtual void MemberAdmin(string SessionKey, GID_t target, QQ_t member, bool assign)=0
修改群员管理员
virtual std::vector< GroupMember > LatestMemberList(string SessionKey, GID_t target)=0
获取最新群成员列表
virtual std::vector< MessageChain > RoamingMessages(string SessionKey, std::time_t TimeStart, std::time_t TimeEnd, UID_t target)=0
获取漫游消息
virtual MessageId_t SendGroupMessage(string SessionKey, GID_t group, const MessageChain &message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送群消息
virtual void SetEssence(string SessionKey, MessageId_t id, GID_t target)=0
设置群精华消息
virtual void Mute(string SessionKey, GID_t target, QQ_t member, std::chrono::seconds time)=0
禁言群成员
virtual void Unmute(string SessionKey, GID_t target, QQ_t member)=0
解除群成员禁言
virtual GroupFileInfo FileUploadChunked(string SessionKey, string path, UID_t target, string type, string name, std::function< bool(size_t offset, std::ostream &sink, bool &finish)> ContentProvider)=0
分块上传文件
virtual void SendNudge(string SessionKey, QQ_t target, UID_t subject, NudgeType kind)=0
发送头像戳一戳消息
virtual void OnConnectionError(Callback< ClientConnectionErrorEvent >)=0
Register callback for ConnectionError event
virtual std::vector< GroupAnnouncement > AnnoList(string SessionKey, GID_t target, int64_t offset=0, int64_t size=0)=0
获取群公告
virtual MessageId_t SendFriendMessage(string SessionKey, QQ_t qq, const MessageChain &message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送好友消息
virtual void Quit(string SessionKey, GID_t target)=0
退出群聊
virtual GroupFileInfo FileUpload(string SessionKey, string path, UID_t target, string type, string name, string content)=0
上传文件
virtual UserProfile GetBotProfile(string SessionKey)=0
获取Bot资料
virtual void OnRecv(Callback< const string & >)=0
Register callback for receiving content
virtual string CallAPI(const string &path, const string &method, const string &data)=0
Call any api, just in case
virtual GroupFileInfo FileMkdir(string SessionKey, string id, string path, UID_t target, string directory)=0
创建文件夹
virtual void Connect()=0
Called for opening a session to mirai-api-http
virtual MessageId_t SendFriendMessage(string SessionKey, QQ_t qq, MessageChain &&message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送好友消息
virtual void Disconnect(string SessionKey)=0
Called for closing a session
virtual GroupMember GetMemberInfo(string SessionKey, GID_t target, QQ_t member)=0
获取群员设置
virtual std::vector< Group > GroupList(string SessionKey)=0
获取群列表
virtual void SetGroupConfig(string SessionKey, GID_t target, string name, std::optional< bool > AllowConfessTalk=std::nullopt, std::optional< bool > AllowMemberInvite=std::nullopt, std::optional< bool > AutoApprove=std::nullopt, std::optional< bool > AllowAnonymousChat=std::nullopt)=0
修改群设置
virtual void CmdRegister(string SessionKey, string name, std::vector< string > alias, string usage, string description)=0
注册命令
virtual UserProfile GetMemberProfile(string SessionKey, GID_t target, QQ_t MemberId)=0
获取群成员资料
virtual void UnmuteAll(string SessionKey, GID_t target)=0
解除全体禁言
virtual void OnConnectionClosed(Callback< ClientConnectionClosedEvent >)=0
Register callback for ConnectionClosed event
virtual UserProfile GetUserProfile(string SessionKey, QQ_t target)=0
获取QQ用户资料
virtual MessageId_t SendTempMessage(string SessionKey, QQ_t qq, GID_t group, const MessageChain &message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送临时会话消息
virtual GroupAnnouncement AnnoPublish(string SessionKey, GID_t target, string content, string url, string path, string base64, bool ToNewMember=false, bool pinned=false, bool ShowEditCard=false, bool ShowPopup=false, bool RequireConfirm=false)=0
发布群公告
virtual GroupConfig GetGroupConfig(string SessionKey, GID_t target)=0
获取群设置
virtual void RespNewFriendRequestEvent(string SessionKey, int64_t EventId, QQ_t FromId, GID_t GroupId, int operate, string message)=0
添加好友申请
virtual void AnnoDelete(string SessionKey, GID_t target, string fid)=0
删除群公告
virtual void Kick(string SessionKey, GID_t target, QQ_t member, string message, bool block)=0
移除群成员
virtual void RespMemberJoinRequestEvent(string SessionKey, int64_t EventId, QQ_t FromId, GID_t GroupId, int operate, string message)=0
用户入群申请
virtual std::variant< FriendMessageEvent, GroupMessageEvent, TempMessageEvent, StrangerMessageEvent > MessageFromId(string SessionKey, MessageId_t id, UID_t target)=0
通过messageId获取消息
virtual void CmdExecute(string SessionKey, const MessageChain &command)=0
执行命令
virtual std::vector< QQ_t > BotList()=0
获取登录账号
virtual MessageId_t SendTempMessage(string SessionKey, QQ_t qq, GID_t group, MessageChain &&message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送临时会话消息
virtual void FileDelete(string SessionKey, string id, string path, UID_t target)=0
删除文件
virtual UserProfile GetFriendProfile(string SessionKey, QQ_t target)=0
获取好友资料
virtual ~IAdaptor()=default
virtual void SetMemberInfo(string SessionKey, GID_t target, QQ_t member, string name, string title)=0
修改群员设置
virtual MessageId_t SendGroupMessage(string SessionKey, GID_t group, MessageChain &&message, std::optional< MessageId_t > QuoteId=std::nullopt)=0
发送群消息
virtual GroupFileInfo GetFileInfo(string SessionKey, string id, string path, UID_t target, bool withDownloadInfo=false)=0
获取文件信息
virtual MiraiImage UploadImage(string SessionKey, string type, string image)=0
上传图片
virtual QQ_t GetBotQQ()=0
获取Bot账号
virtual MiraiAudio UploadAudio(string SessionKey, string type, string Audio)=0
上传音频
virtual std::vector< GroupFileInfo > FileList(string SessionKey, string id, string path, UID_t target, int64_t offset=0, int64_t size=0, bool withDownloadInfo=false)=0
查看文件列表
virtual void FileMove(string SessionKey, string id, string path, UID_t target, string TargetDirId, string TargetDirPath)=0
移动文件
virtual void OnConnectionEstablished(Callback< ClientConnectionEstablishedEvent >)=0
Register callback for ConnectionEstablished event
virtual string Version()=0
获取版本号
virtual MiraiAudio UploadAudioChunked(string SessionKey, string type, std::function< bool(size_t offset, std::ostream &sink, bool &finish)> ContentProvider)=0
分块上传音频
Base class for QQ_t and GID_t
int64_t MessageId_t
消息id类型,用于撤回消息和引用消息