Skip to content

Commit 96975e6

Browse files
committed
FriendAddedEvent
1 parent 1fbf4eb commit 96975e6

File tree

5 files changed

+44
-4
lines changed

5 files changed

+44
-4
lines changed

build.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,6 @@ for GOOS in $PLATFORMS_ARM; do
4040
done
4141

4242
cp application.yml "${OUTPUT_DIR}/application.yml"
43-
cp -r static "${OUTPUT_DIR}/static" # https://github.com/ProtobufBot/Client-UI 前端编译产物dist
43+
cp -r static "${OUTPUT_DIR}/static" # https://github.com/ProtobufBot/Client-UI 前端编译产物dist
44+
45+
echo "可以把不要的系统删掉">"${OUTPUT_DIR}/可以把不要的系统删掉"

pkg/plugin/plugin.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type (
1818
GroupInvitedRequestPlugin = func(*client.QQClient, *client.GroupInvitedRequest) int32
1919
GroupMessageRecalledPlugin = func(*client.QQClient, *client.GroupMessageRecalledEvent) int32
2020
FriendMessageRecalledPlugin = func(*client.QQClient, *client.FriendMessageRecalledEvent) int32
21+
NewFriendAddedPlugin = func(*client.QQClient, *client.NewFriendEvent) int32
2122
)
2223

2324
const (
@@ -36,6 +37,7 @@ var UserJoinGroupRequestPluginList = make([]UserJoinGroupRequestPlugin, 0)
3637
var GroupInvitedRequestPluginList = make([]GroupInvitedRequestPlugin, 0)
3738
var GroupMessageRecalledPluginList = make([]GroupMessageRecalledPlugin, 0)
3839
var FriendMessageRecalledPluginList = make([]FriendMessageRecalledPlugin, 0)
40+
var NewFriendAddedPluginList = make([]NewFriendAddedPlugin, 0)
3941

4042
func Serve(cli *client.QQClient) {
4143
cli.OnPrivateMessage(handlePrivateMessage)
@@ -49,6 +51,7 @@ func Serve(cli *client.QQClient) {
4951
cli.OnGroupInvited(handleGroupInvitedRequest)
5052
cli.OnGroupMessageRecalled(handleGroupMessageRecalled)
5153
cli.OnFriendMessageRecalled(handleFriendMessageRecalled)
54+
cli.OnNewFriendAdded(handleNewFriendAdded)
5255
}
5356

5457
// 添加私聊消息插件
@@ -106,6 +109,11 @@ func AddFriendMessageRecalledPlugin(plugin FriendMessageRecalledPlugin) {
106109
FriendMessageRecalledPluginList = append(FriendMessageRecalledPluginList, plugin)
107110
}
108111

112+
// 添加好友添加处理插件
113+
func AddNewFriendAddedPlugin(plugin NewFriendAddedPlugin) {
114+
NewFriendAddedPluginList = append(NewFriendAddedPluginList, plugin)
115+
}
116+
109117
func handlePrivateMessage(cli *client.QQClient, event *message.PrivateMessage) {
110118
SafeGo(func() {
111119
for _, plugin := range PrivateMessagePluginList {
@@ -216,6 +224,16 @@ func handleFriendMessageRecalled(cli *client.QQClient, event *client.FriendMessa
216224
})
217225
}
218226

227+
func handleNewFriendAdded(cli *client.QQClient, event *client.NewFriendEvent) {
228+
SafeGo(func() {
229+
for _, plugin := range NewFriendAddedPluginList {
230+
if result := plugin(cli, event); result == MessageBlock {
231+
break
232+
}
233+
}
234+
})
235+
}
236+
219237
func SafeGo(fn func()) {
220238
go func() {
221239
defer func() {

service/bot/mirai2raw.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ func MiraiMsgToRawMsg(messageChain []message.IMessageElement) string {
1212
case *message.TextElement:
1313
result += elem.Content
1414
case *message.AtElement:
15-
result += fmt.Sprintf("[@%d]", elem.Target)
15+
result += fmt.Sprintf(`<at qq="%d"/>`, elem.Target)
1616
case *message.ImageElement:
17-
result += "[图片]"
17+
result += fmt.Sprintf(`<image file="%s" url="%s"/>`, elem.Url, elem.Url)
1818
case *message.FaceElement:
19-
result += "[表情]"
19+
result += fmt.Sprintf(`<face id="%d" name="%s"/>`, elem.Index, elem.Name)
20+
case *message.VoiceElement:
21+
result += fmt.Sprintf(`<voice file="%s" url="%s"/>`, elem.Url, elem.Url)
2022
}
2123
}
2224
return result

service/handler/bot.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ func CreateBotImpl(uin int64, password string) {
142142
plugin.AddGroupInvitedRequestPlugin(plugins.ReportGroupInvitedRequest)
143143
plugin.AddGroupMessageRecalledPlugin(plugins.ReportGroupMessageRecalled)
144144
plugin.AddFriendMessageRecalledPlugin(plugins.ReportFriendMessageRecalled)
145+
plugin.AddNewFriendAddedPlugin(plugins.ReportNewFriendAdded)
145146

146147
plugin.Serve(bot.Cli)
147148
log.Infof("插件加载完成")

service/plugins/report.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,3 +295,20 @@ func ReportFriendMessageRecalled(cli *client.QQClient, event *client.FriendMessa
295295
bot.HandleEventFrame(cli, eventProto)
296296
return plugin.MessageIgnore
297297
}
298+
299+
func ReportNewFriendAdded(cli *client.QQClient, event *client.NewFriendEvent) int32 {
300+
eventProto := &onebot.Frame{
301+
FrameType: onebot.Frame_TFriendAddNoticeEvent,
302+
}
303+
eventProto.Data = &onebot.Frame_FriendAddNoticeEvent{
304+
FriendAddNoticeEvent: &onebot.FriendAddNoticeEvent{
305+
Time: time.Now().Unix(),
306+
SelfId: cli.Uin,
307+
PostType: "notice",
308+
NoticeType: "friend_add",
309+
UserId: event.Friend.Uin,
310+
},
311+
}
312+
bot.HandleEventFrame(cli, eventProto)
313+
return plugin.MessageIgnore
314+
}

0 commit comments

Comments
 (0)