Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Commit d725985

Browse files
committed
新增 好友消息撤回事件; (但是没有效果)
1 parent 1fc2442 commit d725985

File tree

5 files changed

+103
-0
lines changed

5 files changed

+103
-0
lines changed

examples/RecallEvent.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,20 @@ int main()
3737
}
3838
});
3939

40+
bot.On<FriendRecallEvent>(
41+
[&](FriendRecallEvent gm)
42+
{
43+
try
44+
{
45+
auto mc = "刚刚有人撤回了: " + bot.GetFriendMessageFromId(gm.MessageId).MessageChain;
46+
bot.SendMessage(gm.AuthorQQ, mc);
47+
}
48+
catch (const std::exception& ex)
49+
{
50+
cout << ex.what() << endl;
51+
}
52+
});
53+
4054

4155
bot.EventLoop();
4256
try

include/events/events.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "temp_message.hpp"
99
// 好友相关事件
1010
#include "new_friend_event.hpp"
11+
#include "friend_recall_event.hpp"
1112
// 群组相关事件
1213
#include "group_recall_event.hpp"
1314
#include "join_request_event.hpp"

include/events/events_name.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ namespace Cyan
5050
if (miraiEvent == "MemberLeaveEventKick") return MiraiEvent::MemberLeaveEventKick;
5151
if (miraiEvent == "MemberLeaveEventQuit") return MiraiEvent::MemberLeaveEventQuit;
5252
if (miraiEvent == "GroupRecallEvent") return MiraiEvent::GroupRecallEvent;
53+
if (miraiEvent == "FriendRecallEvent") return MiraiEvent::FriendRecallEvent;
5354
return MiraiEvent::Default;
5455
}
5556

@@ -97,6 +98,9 @@ namespace Cyan
9798
case Cyan::MiraiEvent::GroupRecallEvent:
9899
result = "GroupRecallEvent";
99100
break;
101+
case Cyan::MiraiEvent::FriendRecallEvent:
102+
result = "FriendRecallEvent";
103+
break;
100104
default:
101105
result = "Default";
102106
break;
@@ -189,6 +193,12 @@ namespace Cyan
189193
return MiraiEvent::GroupRecallEvent;
190194
}
191195

196+
template<>
197+
MiraiEvent GetEventType<FriendRecallEvent>()
198+
{
199+
return MiraiEvent::FriendRecallEvent;
200+
}
201+
192202
}
193203

194204

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#pragma once
2+
#ifndef mirai_cpp_events_friend_recall_event_hpp_H_
3+
#define mirai_cpp_events_friend_recall_event_hpp_H_
4+
5+
#include <nlohmann/json.hpp>
6+
#include "CURLWrapper.h"
7+
#include "defs/qq_types.hpp"
8+
#include "defs/serializable.hpp"
9+
#include "defs/group_member.hpp"
10+
11+
namespace Cyan
12+
{
13+
// ºÃÓÑÏûÏ¢³·»ØÊ¼þ
14+
class FriendRecallEvent : public Serializable
15+
{
16+
public:
17+
int64_t Time = 0;
18+
QQ_t AuthorQQ;
19+
Cyan::MessageId MessageId;
20+
QQ_t Operator;
21+
22+
FriendRecallEvent() = default;
23+
FriendRecallEvent(const FriendRecallEvent& gm)
24+
{
25+
Time = gm.Time;
26+
AuthorQQ = gm.AuthorQQ;
27+
MessageId = gm.MessageId;
28+
Operator = gm.Operator;
29+
}
30+
FriendRecallEvent& operator=(const FriendRecallEvent& t)
31+
{
32+
FriendRecallEvent tmp(t);
33+
std::swap(this->Time, tmp.Time);
34+
std::swap(this->AuthorQQ, tmp.AuthorQQ);
35+
std::swap(this->MessageId, tmp.MessageId);
36+
std::swap(this->Operator, tmp.Operator);
37+
return *this;
38+
}
39+
40+
void SetMiraiBot(MiraiBot* bot)
41+
{
42+
this->bot_ = bot;
43+
}
44+
45+
virtual ~FriendRecallEvent() = default;
46+
virtual bool Set(const json& j) override
47+
{
48+
this->Time = j["time"].get<int64_t>();
49+
this->AuthorQQ = (QQ_t)j["authorId"].get<int64_t>();
50+
this->MessageId = j["messageId"].get<int64_t>();
51+
this->Operator = (QQ_t)j["operator"].get<int64_t>();
52+
return true;
53+
}
54+
virtual json ToJson() const override
55+
{
56+
json j = json::object();
57+
j["type"] = "GroupRecallEvent";
58+
j["time"] = this->Time;
59+
j["authorId"] = (int64_t)this->AuthorQQ;
60+
j["messageId"] = this->MessageId;
61+
j["operator"] = (int64_t)this->Operator;
62+
return j;
63+
}
64+
65+
private:
66+
MiraiBot* bot_;
67+
};
68+
69+
}
70+
71+
#endif // !mirai_cpp_events_friend_recall_event_hpp_H_

include/mirai_bot.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,13 @@ namespace Cyan
810810
tm->Set(json_);
811811
return std::dynamic_pointer_cast<Serializable>(tm);
812812
}
813+
if (mirai_event == MiraiEvent::FriendRecallEvent)
814+
{
815+
std::shared_ptr<FriendRecallEvent> tm = std::make_shared<FriendRecallEvent>();
816+
tm->SetMiraiBot(this);
817+
tm->Set(json_);
818+
return std::dynamic_pointer_cast<Serializable>(tm);
819+
}
813820
}
814821

815822
QQ_t qq_;

0 commit comments

Comments
 (0)