mirror of
https://github.com/fumiama/NanoBot.git
synced 2026-06-11 05:30:24 +08:00
optimize: メッセージ送信機能
This commit is contained in:
2
bot.go
2
bot.go
@@ -153,7 +153,7 @@ func (bot *Bot) Authorization() string {
|
|||||||
return "Bot " + bot.AppID + "." + bot.Token
|
return "Bot " + bot.AppID + "." + bot.Token
|
||||||
}
|
}
|
||||||
|
|
||||||
// AtMe 返回 "<@!"+bot.ready.User.ID+">"
|
// AtMe 返回 <@!bot.ready.User.ID>
|
||||||
func (bot *Bot) AtMe() string {
|
func (bot *Bot) AtMe() string {
|
||||||
return "<@!" + bot.ready.User.ID + ">"
|
return "<@!" + bot.ready.User.ID + ">"
|
||||||
}
|
}
|
||||||
|
|||||||
58
context.go
58
context.go
@@ -75,13 +75,18 @@ func (ctx *Ctx) CheckSession() Rule {
|
|||||||
|
|
||||||
// Send 发送消息到对方
|
// Send 发送消息到对方
|
||||||
func (ctx *Ctx) Send(replytosender bool, post *MessagePost) (*Message, error) {
|
func (ctx *Ctx) Send(replytosender bool, post *MessagePost) (*Message, error) {
|
||||||
msg := ctx.Value.(*Message)
|
msg, ok := ctx.Value.(*Message)
|
||||||
post.ReplyMessageID = msg.ID
|
if ok && msg != nil {
|
||||||
if replytosender {
|
post.ReplyMessageID = msg.ID
|
||||||
post.MessageReference = &MessageReference{
|
if replytosender {
|
||||||
MessageID: msg.ID,
|
post.MessageReference = &MessageReference{
|
||||||
|
MessageID: msg.ID,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
post.ReplyMessageID = "MESSAGE_CREATE"
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.SrcGuildID != "" { // dms
|
if msg.SrcGuildID != "" { // dms
|
||||||
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
||||||
}
|
}
|
||||||
@@ -90,16 +95,20 @@ func (ctx *Ctx) Send(replytosender bool, post *MessagePost) (*Message, error) {
|
|||||||
|
|
||||||
// SendPlainMessage 发送纯文本消息到对方
|
// SendPlainMessage 发送纯文本消息到对方
|
||||||
func (ctx *Ctx) SendPlainMessage(replytosender bool, printable ...any) (*Message, error) {
|
func (ctx *Ctx) SendPlainMessage(replytosender bool, printable ...any) (*Message, error) {
|
||||||
msg := ctx.Value.(*Message)
|
msg, ok := ctx.Value.(*Message)
|
||||||
post := &MessagePost{
|
post := &MessagePost{}
|
||||||
ReplyMessageID: msg.ID,
|
if ok && msg != nil {
|
||||||
}
|
post.ReplyMessageID = msg.ID
|
||||||
if replytosender {
|
if replytosender {
|
||||||
post.MessageReference = &MessageReference{
|
post.MessageReference = &MessageReference{
|
||||||
MessageID: msg.ID,
|
MessageID: msg.ID,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
post.ReplyMessageID = "MESSAGE_CREATE"
|
||||||
}
|
}
|
||||||
post.Content = fmt.Sprint(printable...)
|
|
||||||
|
post.Content = HideURL(fmt.Sprint(printable...))
|
||||||
if msg.SrcGuildID != "" { // dms
|
if msg.SrcGuildID != "" { // dms
|
||||||
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
||||||
}
|
}
|
||||||
@@ -108,21 +117,26 @@ func (ctx *Ctx) SendPlainMessage(replytosender bool, printable ...any) (*Message
|
|||||||
|
|
||||||
// SendImage 发送带图片消息到对方
|
// SendImage 发送带图片消息到对方
|
||||||
func (ctx *Ctx) SendImage(file string, replytosender bool, caption ...any) (*Message, error) {
|
func (ctx *Ctx) SendImage(file string, replytosender bool, caption ...any) (*Message, error) {
|
||||||
msg := ctx.Value.(*Message)
|
msg, ok := ctx.Value.(*Message)
|
||||||
post := &MessagePost{
|
post := &MessagePost{}
|
||||||
ReplyMessageID: msg.ID,
|
if ok && msg != nil {
|
||||||
|
post.ReplyMessageID = msg.ID
|
||||||
|
if replytosender {
|
||||||
|
post.MessageReference = &MessageReference{
|
||||||
|
MessageID: msg.ID,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
post.ReplyMessageID = "MESSAGE_CREATE"
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(file, "http") {
|
if strings.HasPrefix(file, "http") {
|
||||||
post.Image = file
|
post.Image = file
|
||||||
} else {
|
} else {
|
||||||
post.ImageFile = file
|
post.ImageFile = file
|
||||||
}
|
}
|
||||||
if replytosender {
|
post.Content = HideURL(fmt.Sprint(caption...))
|
||||||
post.MessageReference = &MessageReference{
|
|
||||||
MessageID: msg.ID,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
post.Content = fmt.Sprint(caption...)
|
|
||||||
if msg.SrcGuildID != "" { // dms
|
if msg.SrcGuildID != "" { // dms
|
||||||
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
return ctx.Caller.PostMessageToUser(msg.GuildID, post)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ func MessageUnescape(text string) string {
|
|||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HideURL 转义 URL 以避免审核
|
||||||
|
func HideURL(s string) string {
|
||||||
|
s = strings.ReplaceAll(s, ".", "…")
|
||||||
|
s = strings.ReplaceAll(s, "http://", "🔗📄:")
|
||||||
|
s = strings.ReplaceAll(s, "https://", "🔗🔒:")
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
// UnderlineToCamel convert abc_def to AbcDef
|
// UnderlineToCamel convert abc_def to AbcDef
|
||||||
func UnderlineToCamel(s string) string {
|
func UnderlineToCamel(s string) string {
|
||||||
sb := strings.Builder{}
|
sb := strings.Builder{}
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ type User struct {
|
|||||||
UnionUserAccount string `json:"union_user_account"`
|
UnionUserAccount string `json:"union_user_account"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// At 返回 <@!u.ID>
|
||||||
|
func (u *User) At() string {
|
||||||
|
return "<@!" + u.ID + ">"
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyInfo 获取当前用户(机器人)详情
|
// GetMyInfo 获取当前用户(机器人)详情
|
||||||
//
|
//
|
||||||
// https://bot.q.qq.com/wiki/develop/api/openapi/user/me.html
|
// https://bot.q.qq.com/wiki/develop/api/openapi/user/me.html
|
||||||
|
|||||||
Reference in New Issue
Block a user