v1.0.0 beta 11

This commit is contained in:
2026-03-06 12:46:30 +03:00
parent f42d47af53
commit 4dc172a3b5
3 changed files with 58 additions and 16 deletions

View File

@@ -5,6 +5,7 @@ import (
"sync/atomic" "sync/atomic"
"git.nix13.pw/scuroneko/laniakea/tgapi" "git.nix13.pw/scuroneko/laniakea/tgapi"
"git.nix13.pw/scuroneko/laniakea/utils"
) )
type draftIdGenerator interface { type draftIdGenerator interface {
@@ -55,6 +56,7 @@ type Draft struct {
func NewRandomDraftProvider(api *tgapi.API) *DraftProvider { func NewRandomDraftProvider(api *tgapi.API) *DraftProvider {
return &DraftProvider{ return &DraftProvider{
api: api, generator: &RandomDraftIdGenerator{}, api: api, generator: &RandomDraftIdGenerator{},
parseMode: tgapi.ParseMDV2,
drafts: make(map[uint64]*Draft), drafts: make(map[uint64]*Draft),
} }
} }
@@ -84,9 +86,12 @@ func (d *DraftProvider) NewDraft() *Draft {
d.drafts[id] = draft d.drafts[id] = draft
return draft return draft
} }
func (d *Draft) push(text string, escapeMd bool) error {
func (d *Draft) Push(newText string) error { if escapeMd {
d.Message += newText text += utils.EscapeMarkdownV2(text)
} else {
text += text
}
params := tgapi.SendMessageDraftP{ params := tgapi.SendMessageDraftP{
ChatID: d.chatID, ChatID: d.chatID,
DraftID: d.ID, DraftID: d.ID,
@@ -100,6 +105,14 @@ func (d *Draft) Push(newText string) error {
_, err := d.api.SendMessageDraft(params) _, err := d.api.SendMessageDraft(params)
return err return err
} }
func (d *Draft) Push(text string) error {
return d.push(text, true)
}
func (d *Draft) PushMarkdown(text string) error {
return d.push(text, false)
}
func (d *Draft) Clear() { func (d *Draft) Clear() {
d.Message = "" d.Message = ""
} }

View File

@@ -99,12 +99,15 @@ func (m *AnswerMessage) EditCaptionKeyboard(text string, kb *InlineKeyboard) *An
return m.ctx.editPhotoText(m.MessageID, text, kb) return m.ctx.editPhotoText(m.MessageID, text, kb)
} }
func (ctx *MsgContext) answer(text string, keyboard *InlineKeyboard) *AnswerMessage { func (ctx *MsgContext) answer(text string, keyboard *InlineKeyboard, escapeMd bool) *AnswerMessage {
params := tgapi.SendMessageP{ params := tgapi.SendMessageP{
ChatID: ctx.Msg.Chat.ID, ChatID: ctx.Msg.Chat.ID,
Text: text, Text: text,
ParseMode: tgapi.ParseMDV2, ParseMode: tgapi.ParseMDV2,
} }
if escapeMd {
params.Text = utils.EscapeMarkdownV2(text)
}
if keyboard != nil { if keyboard != nil {
params.ReplyMarkup = keyboard.Get() params.ReplyMarkup = keyboard.Get()
} }
@@ -129,23 +132,35 @@ func (ctx *MsgContext) answer(text string, keyboard *InlineKeyboard) *AnswerMess
MessageID: msg.MessageID, ctx: ctx, IsMedia: false, Text: text, MessageID: msg.MessageID, ctx: ctx, IsMedia: false, Text: text,
} }
} }
func (ctx *MsgContext) AnswerMarkdown(text string) *AnswerMessage {
return ctx.answer(text, nil, false)
}
func (ctx *MsgContext) Answer(text string) *AnswerMessage { func (ctx *MsgContext) Answer(text string) *AnswerMessage {
return ctx.answer(text, nil) return ctx.answer(text, nil, true)
}
func (ctx *MsgContext) AnswerfMarkdown(template string, args ...any) *AnswerMessage {
return ctx.answer(fmt.Sprintf(template, args...), nil, false)
} }
func (ctx *MsgContext) Answerf(template string, args ...any) *AnswerMessage { func (ctx *MsgContext) Answerf(template string, args ...any) *AnswerMessage {
return ctx.answer(fmt.Sprintf(template, args...), nil) return ctx.answer(fmt.Sprintf(template, args...), nil, true)
}
func (ctx *MsgContext) KeyboardMarkdown(text string, keyboard *InlineKeyboard) *AnswerMessage {
return ctx.answer(text, keyboard, false)
} }
func (ctx *MsgContext) Keyboard(text string, kb *InlineKeyboard) *AnswerMessage { func (ctx *MsgContext) Keyboard(text string, kb *InlineKeyboard) *AnswerMessage {
return ctx.answer(text, kb) return ctx.answer(text, kb, true)
} }
func (ctx *MsgContext) answerPhoto(photoId, text string, kb *InlineKeyboard) *AnswerMessage { func (ctx *MsgContext) answerPhoto(photoId, text string, kb *InlineKeyboard, escapeMd bool) *AnswerMessage {
params := tgapi.SendPhotoP{ params := tgapi.SendPhotoP{
ChatID: ctx.Msg.Chat.ID, ChatID: ctx.Msg.Chat.ID,
Caption: text, Caption: text,
ParseMode: tgapi.ParseMD, ParseMode: tgapi.ParseMDV2,
Photo: photoId, Photo: photoId,
} }
if escapeMd {
params.Caption = utils.EscapeMarkdownV2(text)
}
if kb != nil { if kb != nil {
params.ReplyMarkup = kb.Get() params.ReplyMarkup = kb.Get()
} }
@@ -165,10 +180,24 @@ func (ctx *MsgContext) answerPhoto(photoId, text string, kb *InlineKeyboard) *An
} }
} }
func (ctx *MsgContext) AnswerPhoto(photoId, text string) *AnswerMessage { func (ctx *MsgContext) AnswerPhoto(photoId, text string) *AnswerMessage {
return ctx.answerPhoto(photoId, text, nil) return ctx.answerPhoto(photoId, text, nil, true)
} }
func (ctx *MsgContext) AnswerPhotoMarkdown(photoId, text string) *AnswerMessage {
return ctx.answerPhoto(photoId, text, nil, false)
}
func (ctx *MsgContext) AnswerPhotoKeyboard(photoId, text string, kb *InlineKeyboard) *AnswerMessage { func (ctx *MsgContext) AnswerPhotoKeyboard(photoId, text string, kb *InlineKeyboard) *AnswerMessage {
return ctx.answerPhoto(photoId, text, kb) return ctx.answerPhoto(photoId, text, kb, true)
}
func (ctx *MsgContext) AnswerPhotoKeyboardMarkdown(photoId, text string, kb *InlineKeyboard) *AnswerMessage {
return ctx.answerPhoto(photoId, text, kb, false)
}
func (ctx *MsgContext) AnswerPhotof(photoId, template string, args ...any) *AnswerMessage {
return ctx.answerPhoto(photoId, fmt.Sprintf(template, args...), nil, true)
}
func (ctx *MsgContext) AnswerPhotofMarkdown(photoId, template string, args ...any) *AnswerMessage {
return ctx.answerPhoto(photoId, fmt.Sprintf(template, args...), nil, false)
} }
func (ctx *MsgContext) delete(messageId int) { func (ctx *MsgContext) delete(messageId int) {
@@ -214,12 +243,12 @@ func (ctx *MsgContext) SendAction(action tgapi.ChatActionType) {
} }
func (ctx *MsgContext) error(err error) { func (ctx *MsgContext) error(err error) {
text := fmt.Sprintf(ctx.errorTemplate, utils.EscapeMarkdown(err.Error())) text := fmt.Sprintf(ctx.errorTemplate, err.Error())
if ctx.CallbackQueryId != "" { if ctx.CallbackQueryId != "" {
ctx.answerCallbackQuery("", text, false) ctx.answerCallbackQuery("", text, false)
} else { } else {
ctx.answer(text, nil) ctx.answer(text, nil, true)
} }
ctx.botLogger.Errorln(err) ctx.botLogger.Errorln(err)
} }

View File

@@ -1,9 +1,9 @@
package utils package utils
const ( const (
VersionString = "1.0.0-beta.10" VersionString = "1.0.0-beta.11"
VersionMajor = 1 VersionMajor = 1
VersionMinor = 0 VersionMinor = 0
VersionPatch = 0 VersionPatch = 0
Beta = 10 Beta = 11
) )