mirror of
https://github.com/lyx0/nourybot.git
synced 2024-11-13 19:49:55 +01:00
start new
This commit is contained in:
parent
ddca49605c
commit
a2a99b81eb
|
@ -1,26 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gempir/go-twitch-irc/v3"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (nb *nourybot) connect() error {
|
|
||||||
nb.twitchClient.Join("nourybot")
|
|
||||||
|
|
||||||
logrus.Info("Connecting to Twitch...")
|
|
||||||
err := nb.twitchClient.Connect()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (nb *nourybot) onConnect() {
|
|
||||||
nb.twitchClient.Say("nourybot", "xd")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (nb *nourybot) onPrivateMessage(message twitch.PrivateMessage) {
|
|
||||||
logrus.Info(message.Message)
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
package main
|
|
|
@ -1,63 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"database/sql"
|
|
||||||
"log"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/gempir/go-twitch-irc/v3"
|
|
||||||
"github.com/lyx0/nourybot/internal/config"
|
|
||||||
"github.com/lyx0/nourybot/pkg/models/mysql"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
|
||||||
)
|
|
||||||
|
|
||||||
type nourybot struct {
|
|
||||||
twitchClient *twitch.Client
|
|
||||||
uptime time.Time
|
|
||||||
channels *mysql.ChannelModel
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
cfg := config.LoadConfig()
|
|
||||||
logrus.Info(cfg.Username, cfg.Oauth)
|
|
||||||
|
|
||||||
twitchClient := twitch.NewClient(cfg.Username, cfg.Oauth)
|
|
||||||
now := time.Now()
|
|
||||||
|
|
||||||
db, err := openDB(cfg.MySQLURI)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
defer db.Close()
|
|
||||||
nb := &nourybot{
|
|
||||||
twitchClient: twitchClient,
|
|
||||||
uptime: now,
|
|
||||||
channels: &mysql.ChannelModel{DB: db},
|
|
||||||
}
|
|
||||||
|
|
||||||
nb.twitchClient.OnPrivateMessage(func(message twitch.PrivateMessage) {
|
|
||||||
nb.onPrivateMessage(message)
|
|
||||||
})
|
|
||||||
|
|
||||||
nb.twitchClient.OnConnect(nb.onConnect)
|
|
||||||
|
|
||||||
err = nb.connect()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func openDB(dsn string) (*sql.DB, error) {
|
|
||||||
db, err := sql.Open("mysql", dsn)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if err = db.Ping(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return db, nil
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
package bot
|
|
|
@ -1,49 +0,0 @@
|
||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
// Bot
|
|
||||||
Username string
|
|
||||||
BotUserId string
|
|
||||||
Oauth string
|
|
||||||
// Admin
|
|
||||||
AdminUsername string
|
|
||||||
AdminUserId string
|
|
||||||
|
|
||||||
// DB
|
|
||||||
MySQLURI string
|
|
||||||
MongoURI string
|
|
||||||
}
|
|
||||||
|
|
||||||
func LoadConfig() *Config {
|
|
||||||
err := godotenv.Load()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error loading .env")
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg := &Config{
|
|
||||||
// Bot
|
|
||||||
Username: os.Getenv("BOT_USERNAME"),
|
|
||||||
Oauth: os.Getenv("BOT_PASS"),
|
|
||||||
BotUserId: os.Getenv("BOT_USER_ID"),
|
|
||||||
|
|
||||||
// Admin
|
|
||||||
AdminUsername: os.Getenv("ADMIN_USER_NAME"),
|
|
||||||
AdminUserId: os.Getenv("ADMIN_USER_ID"),
|
|
||||||
|
|
||||||
// DB
|
|
||||||
MySQLURI: os.Getenv("MYSQL_URI"),
|
|
||||||
MongoURI: os.Getenv("MONGO_URI"),
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info("Config loaded succesfully")
|
|
||||||
|
|
||||||
return cfg
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
CREATE DATABASE nourybot CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
||||||
|
|
||||||
USE nourybot;
|
|
||||||
|
|
||||||
-- create a 'channel' table.
|
|
||||||
CREATE TABLE channel (
|
|
||||||
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
||||||
username VARCHAR(50) NOT NULL,
|
|
||||||
twitchid VARCHAR(50) NOT NULL,
|
|
||||||
added DATETIME NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- add an index on the created column.
|
|
||||||
CREATE INDEX idx_channel_created ON channel(added);
|
|
||||||
|
|
||||||
-- add dummy records
|
|
||||||
INSERT INTO channel (username, twitchid, added) VALUES (
|
|
||||||
'whereismymnd',
|
|
||||||
'31437432',
|
|
||||||
UTC_TIMESTAMP()
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO channel (username, twitchid, added) VALUES (
|
|
||||||
'nourybot',
|
|
||||||
'596581605',
|
|
||||||
UTC_TIMESTAMP()
|
|
||||||
);
|
|
||||||
|
|
||||||
INSERT INTO channel (username, twitchid, added) VALUES (
|
|
||||||
'xnoury',
|
|
||||||
'197780373',
|
|
||||||
UTC_TIMESTAMP()
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Important: Make sure to swap 'pass' and 'username' with a password/user of your own choosing.
|
|
||||||
CREATE USER 'username'@'localhost';
|
|
||||||
GRANT SELECT, INSERT ON nourybot.* TO 'username'@'localhost';
|
|
||||||
|
|
||||||
ALTER USER 'username'@'localhost' IDENTIFIED BY 'pass';
|
|
|
@ -1,15 +0,0 @@
|
||||||
package models
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var ErrNoRecord = errors.New("models: no matching record found")
|
|
||||||
|
|
||||||
type Channel struct {
|
|
||||||
ID int
|
|
||||||
Username string
|
|
||||||
TwitchID string
|
|
||||||
Added time.Time
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package mysql
|
|
||||||
|
|
||||||
import (
|
|
||||||
"database/sql"
|
|
||||||
|
|
||||||
"github.com/lyx0/nourybot/pkg/models"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ChannelModel struct {
|
|
||||||
DB *sql.DB
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ChannelModel) Insert(username string, twitchid string) (int, error) {
|
|
||||||
return 0, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ChannelModel) Get(id int) (*models.Channel, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ChannelModel) Latest() ([]*models.Channel, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
Loading…
Reference in a new issue