mirror of
https://github.com/idanoo/gomatrixbot
synced 2025-07-04 09:32:16 +00:00
Compare commits
No commits in common. "cc9d2d5aaebf04505dd01611b0e16efefacf20b6" and "112abcdf364be392a1dd334e26b2ff3df566b6da" have entirely different histories.
cc9d2d5aae
...
112abcdf36
7 changed files with 5 additions and 168 deletions
|
@ -1,72 +0,0 @@
|
||||||
package database
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// GetLastUsedPic
|
|
||||||
func (db *Database) GetCounterFor(key string) (time.Time, error) {
|
|
||||||
var id int64
|
|
||||||
var timestamp time.Time
|
|
||||||
|
|
||||||
row, err := db.db.Query("SELECT `id`, `timestamp` FROM `counter` WHERE `key` = ? LIMIT 1", key)
|
|
||||||
if err != nil {
|
|
||||||
return timestamp, err
|
|
||||||
}
|
|
||||||
|
|
||||||
defer row.Close()
|
|
||||||
for row.Next() {
|
|
||||||
row.Scan(&id, ×tamp)
|
|
||||||
}
|
|
||||||
|
|
||||||
if id == 0 {
|
|
||||||
return timestamp, fmt.Errorf("%s not found", key)
|
|
||||||
}
|
|
||||||
|
|
||||||
return timestamp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdateCounterFor - Add counter
|
|
||||||
func (db *Database) UpdateCounterFor(key string, timestamp time.Time) (int64, error) {
|
|
||||||
exec, err := db.db.Exec(
|
|
||||||
"REPLACE INTO `counter` (`key`, `timestamp`) VALUES (?,?)",
|
|
||||||
key,
|
|
||||||
timestamp,
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return exec.LastInsertId()
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetAllCounters
|
|
||||||
func (db *Database) GetAllCounters() (map[string]time.Time, error) {
|
|
||||||
counters := make(map[string]time.Time)
|
|
||||||
row, err := db.db.Query("SELECT key, timestamp FROM counter order by key ASC")
|
|
||||||
if err != nil {
|
|
||||||
return counters, err
|
|
||||||
}
|
|
||||||
|
|
||||||
defer row.Close()
|
|
||||||
for row.Next() {
|
|
||||||
var key string
|
|
||||||
var timestamp time.Time
|
|
||||||
row.Scan(&key, ×tamp)
|
|
||||||
counters[key] = timestamp
|
|
||||||
}
|
|
||||||
|
|
||||||
return counters, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteCounter - Deletes a counter by key
|
|
||||||
func (db *Database) DeleteCounter(key string) (int64, error) {
|
|
||||||
res, err := db.db.Exec("DELETE FROM `counter` WHERE `key` = ?", key)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.RowsAffected()
|
|
||||||
}
|
|
|
@ -46,12 +46,6 @@ func (db *Database) runMigrations() (*Database, error) {
|
||||||
return db, err
|
return db, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = db.db.Exec("CREATE TABLE IF NOT EXISTS `counter` " +
|
|
||||||
"(`id` INTEGER PRIMARY KEY AUTOINCREMENT, `key` TEXT, `timestamp` DATETIME)")
|
|
||||||
if err != nil {
|
|
||||||
return db, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return db, nil
|
return db, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import (
|
||||||
|
|
||||||
const fontSize = 42
|
const fontSize = 42
|
||||||
|
|
||||||
const BIRB_PATH = BASE_PATH + "/reaction_pics"
|
const BIRB_PATH = "/root/data/reaction_pics"
|
||||||
|
|
||||||
func (mtrx *MtrxClient) postBirb(ctx context.Context, evt *event.Event) {
|
func (mtrx *MtrxClient) postBirb(ctx context.Context, evt *event.Event) {
|
||||||
idd, birb, err := mtrx.db.GetLastUsedPic(true)
|
idd, birb, err := mtrx.db.GetLastUsedPic(true)
|
||||||
|
|
|
@ -24,9 +24,6 @@ var COMMANDS = []string{
|
||||||
"☝️ react to set room topic",
|
"☝️ react to set room topic",
|
||||||
"📷️ react to save picture for future lulz",
|
"📷️ react to save picture for future lulz",
|
||||||
"",
|
"",
|
||||||
".counter - List all counters",
|
|
||||||
".counter <key> - Get a counter for a key",
|
|
||||||
".counterreset <key> - Reset a counter for a key",
|
|
||||||
".r <?quote>- Returns a random quote (can search quotes)",
|
".r <?quote>- Returns a random quote (can search quotes)",
|
||||||
".rb <?quote> - Returns a random quote on a random bird pic (with optional search)",
|
".rb <?quote> - Returns a random quote on a random bird pic (with optional search)",
|
||||||
".remindme <time - 1w1h> <reminder> - Triggers a reminder",
|
".remindme <time - 1w1h> <reminder> - Triggers a reminder",
|
||||||
|
@ -126,30 +123,6 @@ func (mtrx *MtrxClient) handleCommand(ctx context.Context, evt *event.Event) {
|
||||||
mtrx.sendMessage(ctx, evt.RoomID, err.Error())
|
mtrx.sendMessage(ctx, evt.RoomID, err.Error())
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
case ".counter":
|
|
||||||
if len(args) < 2 {
|
|
||||||
mtrx.getAllCounters(ctx, evt.RoomID)
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
mtrx.getCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case ".counterreset":
|
|
||||||
if len(args) < 2 {
|
|
||||||
mtrx.sendMessage(ctx, evt.RoomID, "Usage: .counterreset <key>")
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
mtrx.updateCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case ".counterdel":
|
|
||||||
if len(args) < 2 {
|
|
||||||
mtrx.sendMessage(ctx, evt.RoomID, "Usage: .counterdel <key>")
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
mtrx.deleteCounterFor(ctx, evt.RoomID, strings.Join(args[1:], " "))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case ".reloadallpics":
|
case ".reloadallpics":
|
||||||
mtrx.db.DeleteAllPics()
|
mtrx.db.DeleteAllPics()
|
||||||
mtrx.pics = make(map[int64]string, 0)
|
mtrx.pics = make(map[int64]string, 0)
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
package gomatrixbot
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"maunium.net/go/mautrix/id"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (mtrx *MtrxClient) getCounterFor(ctx context.Context, roomID id.RoomID, key string) {
|
|
||||||
counter, err := mtrx.db.GetCounterFor(key)
|
|
||||||
if err != nil {
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Failed to get counter for "+key+": "+err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
diff := time.Now().Sub(counter)
|
|
||||||
msg := "Days since " + key + ": " + diff.String()
|
|
||||||
|
|
||||||
mtrx.sendMessage(ctx, roomID, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (mtrx *MtrxClient) getAllCounters(ctx context.Context, roomID id.RoomID) {
|
|
||||||
counters, err := mtrx.db.GetAllCounters()
|
|
||||||
if err != nil {
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Failed to get counters: "+err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
msg := "Counters:\n"
|
|
||||||
for key, timestamp := range counters {
|
|
||||||
msg += key + ": " + timestamp.String() + "\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
mtrx.sendMessage(ctx, roomID, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (mtrx *MtrxClient) updateCounterFor(ctx context.Context, roomID id.RoomID, key string) {
|
|
||||||
timestamp := time.Now()
|
|
||||||
_, err := mtrx.db.UpdateCounterFor(key, timestamp)
|
|
||||||
if err != nil {
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Failed to update counter for "+key+": "+err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Updated counter for "+key)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (mtrx *MtrxClient) deleteCounterFor(ctx context.Context, roomID id.RoomID, key string) {
|
|
||||||
_, err := mtrx.db.DeleteCounter(key)
|
|
||||||
if err != nil {
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Failed to delete counter for "+key+": "+err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
mtrx.sendMessage(ctx, roomID, "Deleted counter for "+key)
|
|
||||||
}
|
|
|
@ -14,10 +14,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
BASE_PATH = "/root/data"
|
OUTPUT_PATH = "/root/data/output"
|
||||||
OUTPUT_PATH = BASE_PATH + "/output"
|
THE_GREATS = "/root/data/the_greats"
|
||||||
THE_GREATS = BASE_PATH + "/the_greats"
|
DATABASE_PATH = "/root/data/database.sql"
|
||||||
DATABASE_PATH = BASE_PATH + "/database.sql"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (mtrx *MtrxClient) getFileContent(url string) ([]byte, error) {
|
func (mtrx *MtrxClient) getFileContent(url string) ([]byte, error) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ var (
|
||||||
MatrixHost string
|
MatrixHost string
|
||||||
MatrixUsername string
|
MatrixUsername string
|
||||||
MatrixPassword string
|
MatrixPassword string
|
||||||
MautrixDB = BASE_PATH + "/mautrix.db"
|
MautrixDB = "/root/data/mautrix.db"
|
||||||
|
|
||||||
mtrx MtrxClient
|
mtrx MtrxClient
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue