Skip to content

Instantly share code, notes, and snippets.

View kkdai's full-sized avatar

Evan Lin kkdai

View GitHub Profile
// 如果有預設 DABTASE_URL 就建立 PostGresSQL; 反之則建立 Mem DB
pSQL := os.Getenv("DATABASE_URL")
if pSQL != "" {
summaryQueue = NewPGSql(pSQL)
} else {
summaryQueue = NewMemDB()
}
// DB Access
type PGSqlDB struct {
Db *pg.DB
}
func (mdb *PGSqlDB) ReadGroupInfo(roomID string) GroupData {
pgsql := &DBStorage{
RoomID: roomID,
}
if ret, err := pgsql.Get(mdb); err == nil {
return ret.Dataset
type MemStorage map[string]GroupData
type MemDB struct {
db MemStorage
}
func (mdb *MemDB) ReadGroupInfo(roomID string) GroupData {
return mdb.db[roomID]
}
type GroupDB interface {
ReadGroupInfo(string) GroupData
AppendGroupInfo(string, MsgDetail)
}
type MsgDetail struct {
MsgText string
UserName string
Time time.Time
}
...
// 把聊天群組裡面的訊息都捲出來(依照先後順序)
oriContext := ""
q := summaryQueue[event.Source.GroupID]
for _, m := range q {
// [xxx]: 他講了什麼... 時間
oriContext = oriContext + fmt.Sprintf("[%s]: %s . %s\n", m.UserName, m.MsgText, m.Time.Local().UTC().Format("2006-01-02 15:04:05"))
}
@kkdai
kkdai / chatgpt.go
Last active December 30, 2022 08:49
package main
import (
"context"
"fmt"
gpt3 "github.com/sashabaranov/go-gpt3"
)
...
case *linebot.TextMessage:
// 預設訊息
reply := "msg ID:" + message.ID + ":" + "Get:" + message.Text + " , \n OK!"
// 如果聊天機器人在群組中,開始儲存訊息。
if event.Source.GroupID != "" {
// 先取得使用者 Display Name (也就是顯示的名稱)
userName := event.Source.UserID
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Web;
@kkdai
kkdai / db.go
Created December 6, 2022 04:19
// 建立与数据库的连接
db, err := sql.Open("mysql", "user:password@tcp(host:port)/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 查询数据库
rows, err := db.Query("SELECT * FROM users")
if err != nil {
func buildFileName() string {
return time.Now().Format("20060102150405")
}