Skip to content

Commit d28858d

Browse files
committed
examples/receive-and-send: 增加私信的 example
1 parent dd301b3 commit d28858d

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

examples/receive-and-send/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,12 @@
1414

1515
返回一个 ark 消息
1616

17+
`dm xxx`
18+
19+
进入私信流程,机器人会给你发一条私信
20+
21+
## 启动方法
22+
23+
- 进入到 receive-and-send 目录
24+
- 修改 config.yaml.demo 为 config.yaml,并在其中配置你的机器人 appid 和 token,注意要符合 yaml 格式要求
25+
- 执行 `go build` 之后执行 `receive-and-send` 或者直接运行 `go run *.go`
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 在这个配置文件中补充你的 appid 和 bot token,并修改文件名为 config.yaml
2+
appid:
3+
token:

examples/receive-and-send/main.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func main() {
4141
// 根据不同的回调,生成 intents
4242
intent := websocket.RegisterHandlers(
4343
ATMessageEventHandler(), ReadyHandler(), ErrorNotifyHandler(), GuildEventHandler(),
44-
MemberEventHandler(), ChannelEventHandler(),
44+
MemberEventHandler(), ChannelEventHandler(), DirectMessageHandler(),
4545
)
4646
if err = botgo.NewSessionManager().Start(wsInfo, botToken, &intent); err != nil {
4747
log.Fatalln(err)
@@ -90,6 +90,13 @@ func MemberEventHandler() websocket.GuildMemberEventHandler {
9090
}
9191
}
9292

93+
func DirectMessageHandler() websocket.DirectMessageEventHandler {
94+
return func(event *dto.WSPayload, data *dto.WSDirectMessageData) error {
95+
fmt.Println(data)
96+
return nil
97+
}
98+
}
99+
93100
func getConfigPath(name string) string {
94101
_, filename, _, ok := runtime.Caller(1)
95102
if ok {

examples/receive-and-send/process.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ func (p Processor) ProcessMessage(input string, data *dto.WSATMessageData) error
3131
IgnoreGetMessageError: true,
3232
},
3333
}
34+
// 进入到私信逻辑
35+
if cmd.Cmd == "dm" {
36+
p.dmHandler(data)
37+
return nil
38+
}
3439
if cmd.Cmd == "time" {
3540
toCreate.Content = genReplyContent(data)
3641
}
@@ -57,6 +62,30 @@ func parseCommand(input string) *CMD {
5762
}
5863
}
5964

65+
func (p Processor) dmHandler(data *dto.WSATMessageData) {
66+
dm, err := p.api.CreateDirectMessage(
67+
context.Background(), &dto.DirectMessageToCreate{
68+
SourceGuildID: data.GuildID,
69+
RecipientID: data.Author.ID,
70+
},
71+
)
72+
if err != nil {
73+
log.Println(err)
74+
return
75+
}
76+
77+
toCreate := &dto.MessageToCreate{
78+
Content: "默认私信回复",
79+
}
80+
_, err = p.api.PostDirectMessage(
81+
context.Background(), dm, toCreate,
82+
)
83+
if err != nil {
84+
log.Println(err)
85+
return
86+
}
87+
}
88+
6089
func genReplyContent(data *dto.WSATMessageData) string {
6190
var tpl = `你好:%s
6291
在子频道 %s 收到消息。

0 commit comments

Comments
 (0)