SQLite Storage
File-based storage ideal for single-process bots and local development. Uses modernc.org/sqlite (pure Go, no CGO).
Install
bash
go get github.com/mtgo-labs/storage/sqliteUsage
go
import (
"github.com/mtgo-labs/storage/sqlite"
tg "github.com/mtgo-labs/mtgo/telegram"
)
// Open or create a database file
store, err := sqlite.Open("bot.db")
if err != nil {
log.Fatal(err)
}
defer store.Close()
client, _ := tg.NewClient(apiID, apiHash, &tg.Config{
BotToken: botToken,
SessionName: "my_bot",
Storage: store,
SavePeers: true,
})With NewAdapter
go
import "github.com/mtgo-labs/storage"
ext, _ := sqlite.Open("bot.db")
adapter, _ := storage.NewAdapter(ext)
defer ext.Close()
client, _ := tg.NewClient(apiID, apiHash, &tg.Config{
BotToken: botToken,
SessionName: "my_bot",
Storage: adapter,
})API
| Method | Description |
|---|---|
Open(path string) | Open or create a SQLite database file |
OpenInMemory() | Create an in-memory SQLite database |
Close() | Close the database connection |
The returned *SQLiteStorage implements storage.Storage and storage.ConversationStore.
Schema
Tables are created automatically on first use:
sessions— session data, auth keys, DC infopeers— cached peer informationkv— key-value metadataconversations— active conversation state
The schema is generated by sqlc from storage/sqlc/sqlite/queries.sql.
In-Memory Mode
For testing or ephemeral bots:
go
store, _ := sqlite.OpenInMemory()
defer store.Close()JavaScript/WASM
SQLite supports WASM compilation via sqlite_js.go which uses the sql.js driver. This enables running bots in browser environments.
