It seems I'd either have to somehow fix the Python thing, or create a whole XMPP bot framework in Golang, should I rewrite it
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja> git-svn-id: file:///srv/svn/repo/chen/trunk@40 32723744-9b23-0b4a-b1da-9b2e968f9461
This commit is contained in:
parent
e1bc4f166c
commit
465ff0d59f
@ -1,10 +1,15 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"log"
|
||||||
"gopkg.in/ini.v1"
|
"gopkg.in/ini.v1"
|
||||||
|
|
||||||
|
"git.chaotic.ninja/yakumo_izuru/chen"
|
||||||
|
"github.com/jbuchbinder/go-xmppbot"
|
||||||
)
|
)
|
||||||
|
|
||||||
var chen struct {
|
var config struct {
|
||||||
jid string
|
jid string
|
||||||
password string
|
password string
|
||||||
prefix string
|
prefix string
|
||||||
@ -12,6 +17,12 @@ var chen struct {
|
|||||||
autojoin string
|
autojoin string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var confFile string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
flag.StringVar(&confFile, "f", "", "Configuration file")
|
||||||
|
}
|
||||||
|
|
||||||
func readConf(file string) error {
|
func readConf(file string) error {
|
||||||
cfg, err := ini.Load(file)
|
cfg, err := ini.Load(file)
|
||||||
|
|
||||||
@ -19,16 +30,22 @@ func readConf(file string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
chen.jid = cfg.Section("chen").Key("jid").String()
|
config.jid = cfg.Section("chen").Key("jid").String()
|
||||||
chen.password = cfg.Section("chen").Key("password").String()
|
config.password = cfg.Section("chen").Key("password").String()
|
||||||
chen.prefix = cfg.Section("chen").Key("prefix").String()
|
config.prefix = cfg.Section("chen").Key("prefix").String()
|
||||||
chen.nick = cfg.Section("chen").Key("nick").String()
|
config.nick = cfg.Section("chen").Key("nick").String()
|
||||||
chen.autojoin = cfg.Section("chen").Key("autojoin").String()
|
config.autojoin = cfg.Section("chen").Key("autojoin").String()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
readConf(chen.ini)
|
flag.Parse()
|
||||||
// Do whatever here
|
if confFile != "" {
|
||||||
|
log.Println("Loading configuration file for Chen")
|
||||||
|
readConf(confFile)
|
||||||
|
} else {
|
||||||
|
log.Fatal("No configuration file has been provided")
|
||||||
|
}
|
||||||
|
log.Printf("Chen v%s starting with config %s\n", chen.FullVersion(), confFile)
|
||||||
}
|
}
|
||||||
|
10
go.mod
10
go.mod
@ -2,6 +2,12 @@ module git.chaotic.ninja/yakumo_izuru/chen
|
|||||||
|
|
||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require gopkg.in/ini.v1 v1.67.0
|
require (
|
||||||
|
github.com/jbuchbinder/go-xmppbot v0.0.0-20201202211837-603b6f40c1d1
|
||||||
|
gopkg.in/ini.v1 v1.67.0
|
||||||
|
)
|
||||||
|
|
||||||
require github.com/stretchr/testify v1.9.0 // indirect
|
require (
|
||||||
|
github.com/mattn/go-xmpp v0.0.0-20190124093244-6093f50721ed // indirect
|
||||||
|
github.com/stretchr/testify v1.9.0 // indirect
|
||||||
|
)
|
||||||
|
4
go.sum
4
go.sum
@ -1,4 +1,8 @@
|
|||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/jbuchbinder/go-xmppbot v0.0.0-20201202211837-603b6f40c1d1 h1:D/19k3fV0YtcD2fot8lEqgPbY4xtRD+rck/IgWE23Z4=
|
||||||
|
github.com/jbuchbinder/go-xmppbot v0.0.0-20201202211837-603b6f40c1d1/go.mod h1:eWgqRsgB8cZqUd3VM03fsFR5Xmzqto5148/GO6WLPBk=
|
||||||
|
github.com/mattn/go-xmpp v0.0.0-20190124093244-6093f50721ed h1:A1hEQg5M0b3Wg06pm3q/B0wdZsPjVQ/a2IgauQ8wCZo=
|
||||||
|
github.com/mattn/go-xmpp v0.0.0-20190124093244-6093f50721ed/go.mod h1:Cs5mF0OsrRRmhkyOod//ldNPOwJsrBvJ+1WRspv0xoc=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
20
main.py
20
main.py
@ -43,16 +43,13 @@ html_files = (
|
|||||||
"application/xhtml+xml",
|
"application/xhtml+xml",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Lifo(list):
|
class Lifo(list):
|
||||||
"""
|
"""
|
||||||
Limited size LIFO array to store messages and urls
|
Limited size LIFO array to store messages and urls
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, size):
|
def __init__(self, size):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.size = size
|
self.size = size
|
||||||
|
|
||||||
def add(self, item):
|
def add(self, item):
|
||||||
self.insert(0, item)
|
self.insert(0, item)
|
||||||
if len(self) > self.size:
|
if len(self) > self.size:
|
||||||
@ -269,6 +266,10 @@ class ChenBot(ClientXMPP):
|
|||||||
if cm in self.commands:
|
if cm in self.commands:
|
||||||
self.commands[cm](msg, ctx, sender)
|
self.commands[cm](msg, ctx, sender)
|
||||||
|
|
||||||
|
@self.word
|
||||||
|
def SOURCE(msg, ctx, sender):
|
||||||
|
if ctx return: bot.send_message(mto=sender, mbody=f"`git clone git://git.chaotic.ninja/yakumo_izuru/chen`", mtype="chat")
|
||||||
|
|
||||||
async def muc_message(self, msg):
|
async def muc_message(self, msg):
|
||||||
"""Process a groupchat message."""
|
"""Process a groupchat message."""
|
||||||
if msg["type"] in ("groupchat", "normal"):
|
if msg["type"] in ("groupchat", "normal"):
|
||||||
@ -290,15 +291,10 @@ class ChenBot(ClientXMPP):
|
|||||||
if cm in self.muc_commands:
|
if cm in self.muc_commands:
|
||||||
self.muc_commands[cm](msg, ctx, sender)
|
self.muc_commands[cm](msg, ctx, sender)
|
||||||
|
|
||||||
@self.muc_command
|
@self.muc_word
|
||||||
def repo(msg, ctx, sender):
|
def SOURCE(msg, ctx, sender):
|
||||||
if ctx:
|
if ctx return: bot.send_message(mto=sender, mbody=f"{msg['mucnick']}: `git clone git://git.chaotic.ninja/yakumo_izuru/chen`", mtype="groupchat")
|
||||||
return
|
|
||||||
bot.send_message(
|
|
||||||
mto=sender,
|
|
||||||
mbody=f"{msg['mucnick']}: https://git.chaotic.ninja/usr/yakumo_izuru/chen",
|
|
||||||
mtype="groupchat",
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
|
50
version.go
Normal file
50
version.go
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package chen
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"runtime/debug"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultVersion = "0.0.0"
|
||||||
|
defaultCommit = "HEAD"
|
||||||
|
defaultBuild = "0000-01-01:00:00+00:00"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// Version is the tagged release version in the form <major>.<minor>.<patch>
|
||||||
|
// following semantic versioning and is overwritten by the build system.
|
||||||
|
Version = defaultVersion
|
||||||
|
|
||||||
|
// Commit is the commit sha of the build (normally from Git) and is overwritten
|
||||||
|
// by the build system.
|
||||||
|
Commit = defaultCommit
|
||||||
|
|
||||||
|
// Build is the date and time of the build as an RFC3339 formatted string
|
||||||
|
// and is overwritten by the build system.
|
||||||
|
Build = defaultBuild
|
||||||
|
)
|
||||||
|
|
||||||
|
// FullVersion display the full version and build
|
||||||
|
func FullVersion() string {
|
||||||
|
var sb strings.Builder
|
||||||
|
|
||||||
|
isDefault := Version == defaultVersion && Commit == defaultCommit && Build == defaultBuild
|
||||||
|
|
||||||
|
if !isDefault {
|
||||||
|
sb.WriteString(fmt.Sprintf("%s@%s %s", Version, Commit, Build))
|
||||||
|
}
|
||||||
|
|
||||||
|
if info, ok := debug.ReadBuildInfo(); ok {
|
||||||
|
if isDefault {
|
||||||
|
sb.WriteString(fmt.Sprintf(" %s", info.Main.Version))
|
||||||
|
}
|
||||||
|
sb.WriteString(fmt.Sprintf(" %s", info.GoVersion))
|
||||||
|
if info.Main.Sum != "" {
|
||||||
|
sb.WriteString(fmt.Sprintf(" %s", info.Main.Sum))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.String()
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user