feat: 添加喜报功能
This commit is contained in:
1
service/group_msg.go
Normal file
1
service/group_msg.go
Normal file
@@ -0,0 +1 @@
|
||||
package service
|
||||
@@ -15,7 +15,7 @@ import (
|
||||
func initDB() {
|
||||
db, err := sql.Open("sqlite3", "./jrrp.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
@@ -28,7 +28,7 @@ func initDB() {
|
||||
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func NewJrrp() *Jrrp {
|
||||
initDB()
|
||||
db, err := sql.Open("sqlite3", "./jrrp.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
return &Jrrp{db: db}
|
||||
}
|
||||
|
||||
1
service/private_msg.go
Normal file
1
service/private_msg.go
Normal file
@@ -0,0 +1 @@
|
||||
package service
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
func initDB() {
|
||||
db, err := sql.Open("sqlite3", "./bindss.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
@@ -69,15 +69,15 @@ func initDB() {
|
||||
|
||||
_, err = db.Exec(createBindTableSQL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
_, err = db.Exec(createScoreTableSQL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
_, err = db.Exec(createRecordTableSQL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ func init() {
|
||||
initDB()
|
||||
db, err := sql.Open("sqlite3", "./bindss.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
SSQuery = &ssQuery{db: db}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ func init() {
|
||||
func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
|
||||
tx, err := ss.db.Begin()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
// ssId为数字
|
||||
@@ -131,7 +131,7 @@ func (ss *ssQuery) BindSS(qqId string, ssId string) (reply string) {
|
||||
func (ss *ssQuery) UnbindSS(qqId string) (reply string) {
|
||||
tx, err := ss.db.Begin()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
//是否已绑定
|
||||
@@ -155,7 +155,7 @@ func (ss *ssQuery) UnbindSS(qqId string) (reply string) {
|
||||
func (ss *ssQuery) GetScore(qqId string) (reply string) {
|
||||
tx, err := ss.db.Begin()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
//是否已绑定
|
||||
@@ -205,7 +205,7 @@ func (ss *ssQuery) GetScore(qqId string) (reply string) {
|
||||
func (ss *ssQuery) SaveRecord(cmdData CommandData) {
|
||||
tx, err := ss.db.Begin()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
dataLite := RecordDataLite{
|
||||
@@ -244,18 +244,18 @@ func (ss *ssQuery) SaveRecord(cmdData CommandData) {
|
||||
dataLite.DeviceControllerRight = *cmdData.Score.DeviceControllerRight
|
||||
}
|
||||
if _, err = tx.Exec("INSERT INTO ssRecordData(score_id, ss_id, name, country, song_name, song_sub_name, song_author_name, song_hash, cover_image, difficulty_raw, pp, stars, weight, modifiers, multiplier, bad_cuts, missed_notes, max_combo,score, full_combo, device_hmd, device_controller_left, device_controller_right, generated_time) VALUES(?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23,?24)", dataLite.ScoreID, dataLite.SsID, dataLite.Name, dataLite.Country, dataLite.SongName, dataLite.SongSubName, dataLite.SongAuthorName, dataLite.SongHash, dataLite.CoverImage, dataLite.DifficultyRaw, dataLite.PP, dataLite.Stars, dataLite.Weight, dataLite.Modifiers, dataLite.Multiplier, dataLite.BadCuts, dataLite.MissedNotes, dataLite.MaxCombo, dataLite.Score, dataLite.FullCombo, dataLite.DeviceHmd, dataLite.DeviceControllerLeft, dataLite.DeviceControllerRight, dataLite.GeneratedTime); err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (ss *ssQuery) GetRecentScores(count int, qqId string) ([]RecordDataLite, error) {
|
||||
tx, err := ss.db.Begin()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
defer tx.Rollback()
|
||||
var ssId string
|
||||
@@ -283,7 +283,7 @@ func (ss *ssQuery) GetRecentScores(count int, qqId string) ([]RecordDataLite, er
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Print(err)
|
||||
}
|
||||
return records, nil
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ type scoresManager struct {
|
||||
|
||||
func init() {
|
||||
for err := ScoresManager.connect(); err != nil; err = ScoresManager.connect() {
|
||||
log.Fatal("连接 WebSocket 失败:", err)
|
||||
log.Print("连接 WebSocket 失败:", err)
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
37
service/xibao/image_gen.go
Normal file
37
service/xibao/image_gen.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package xibao
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/fogleman/gg"
|
||||
)
|
||||
|
||||
func GenerateCongratulationImage(text string, outputFile string) {
|
||||
// 加载喜报背景图片
|
||||
im, err := gg.LoadImage("./resource/xibao_background.png") // 需要提前准备的背景图片
|
||||
if err != nil {
|
||||
log.Print("无法加载喜报图片:", err)
|
||||
}
|
||||
|
||||
// 创建与背景图片大小相同的画布
|
||||
width := im.Bounds().Dx()
|
||||
height := im.Bounds().Dy()
|
||||
dc := gg.NewContext(width, height)
|
||||
|
||||
// 将背景图片绘制到画布上
|
||||
dc.DrawImage(im, 0, 0)
|
||||
|
||||
// 设置字体和大小,字体文件需要自备,放在合适的路径
|
||||
if err := dc.LoadFontFace("./resource/font.ttf", 96); err != nil {
|
||||
log.Print("无法加载字体:", err)
|
||||
}
|
||||
|
||||
dc.SetRGB(1, 0, 0)
|
||||
|
||||
dc.DrawStringAnchored(text, float64(width)/2, float64(height)/2, 0.5, 0.5)
|
||||
|
||||
err = dc.SavePNG(outputFile)
|
||||
if err != nil {
|
||||
log.Print("无法保存生成的图片:", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user