summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruakci <uakci@uakci.pl>2022-08-12 22:46:52 +0200
committeruakci <uakci@uakci.pl>2022-08-13 00:08:13 +0200
commitb12a53e327b8c85d1ada2ad9a299f03773d82d0b (patch)
tree93d44eb6890ae07bebd4f7a68cd909180e0f0941
parentpin go to an older version to prevent internal compiler error in the large ma... (diff)
downloadnuogai-b12a53e327b8c85d1ada2ad9a299f03773d82d0b.tar.gz
nuogai-b12a53e327b8c85d1ada2ad9a299f03773d82d0b.zip
add zugai commands; refactor somewhat
-rw-r--r--bot.go203
-rw-r--r--go.mod15
-rw-r--r--go.sum54
-rw-r--r--gomod2nix.toml41
4 files changed, 204 insertions, 109 deletions
diff --git a/bot.go b/bot.go
index 50124b7..94b78d7 100644
--- a/bot.go
+++ b/bot.go
@@ -25,9 +25,8 @@ import (
const (
lozenge = '▯'
- myself = "490175530537058314"
HELP = "\u2003**commands:**" +
- "\n`%` — Toadūa lookup (3 results at a time)" +
+ "\n`%` — Toadua lookup (3 results at a time)" +
"\n\u2003(`%37` — show 37 results at a time)" +
"\n\u2003(`%!` — show one result, with extra info)" +
"\n\u2003(`%!37` — show 37 results, with extra info)" +
@@ -35,19 +34,14 @@ const (
"\n`%serial` — fagri's serial predicate engine" +
"\n`%nui` — uakci's serial predicate engine" +
"\n\u2003(`%serial` and `%nui` do not accept tone marks)" +
- "\n`%hoe` — Hoelāı renderer (font version: v0.341)" +
+ "\n`%hoe` — Hoelaı renderer (font version: v0.341)" +
"\n\u2003(`%hoe!` — same as above; raw input)" +
"\n`%miu` — jelca's semantic parser"
- UNKNOWN = "unknown command — see `%help` for help"
)
-var (
- header = regexp.MustCompile(`^\*\*.*?\*\*: `)
- whitespace = regexp.MustCompile(`[ ]+`)
- toaPort string
- spePort string
- nuiPort string
-)
+var ports struct {
+ toa, spe, nui string
+}
func mustGetenv(name string) (env string) {
env, ok := os.LookupEnv(name)
@@ -58,9 +52,9 @@ func mustGetenv(name string) (env string) {
}
func init() {
- spePort = mustGetenv("SPE_PORT")
- nuiPort = mustGetenv("NUI_PORT")
- toaPort = mustGetenv("TOA_PORT")
+ ports.spe = mustGetenv("SPE_PORT")
+ ports.nui = mustGetenv("NUI_PORT")
+ ports.toa = mustGetenv("TOA_PORT")
}
func min(a, b int) int {
@@ -94,42 +88,66 @@ func post(uri string, ct string, body io.Reader) ([]byte, error) {
return cont, nil
}
+type Response struct {
+ Text string
+ Image []byte
+}
+
func Respond(dg *discordgo.Session, ms *discordgo.MessageCreate) {
log.Printf("\n* %s", strings.Join(strings.Split(ms.Message.Content, "\n"), "\n "))
respond(ms.Message.Content,
- func(i interface{}) {
- switch t := i.(type) {
- case string:
- dg.ChannelMessageSend(ms.Message.ChannelID, t)
- case []byte:
- dg.ChannelMessageSendComplex(ms.Message.ChannelID,
- &discordgo.MessageSend{
- "", nil, false, []*discordgo.File{
- &discordgo.File{
- "toaq.png",
- "image/png",
- bytes.NewReader(t),
- },
- }, nil, nil, nil,
- })
+ func(r Response) {
+ files := make([]*discordgo.File, 0, 1)
+ if len(r.Image) > 0 {
+ files = append(files, &discordgo.File{
+ Name: "toaq.png",
+ ContentType: "image/png",
+ Reader: bytes.NewReader(r.Image),
+ })
}
+ dg.ChannelMessageSendComplex(ms.Message.ChannelID, &discordgo.MessageSend{
+ Content: r.Text,
+ Files: files,
+ })
})
}
-func respond(message string, callback func(interface{})) {
+func respond(message string, callback func(Response)) {
+ returnText := func(content string) {
+ callback(Response{
+ Text: content,
+ })
+ }
+ returnFromRequest := func(res []byte, err error) {
+ if err != nil {
+ log.Println(err)
+ returnText(err.Error())
+ } else {
+ // silly check; probably gonna have to fix this upstream
+ if len(res) >= 8 && bytes.Equal(res[:8], []byte{0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a}) {
+ callback(Response{
+ Image: res,
+ })
+ } else {
+ callback(Response{
+ Text: string(res),
+ })
+ }
+ }
+ }
defer func() {
if r := recover(); r != nil {
fmt.Printf("%v", r)
- callback("lủı sa hủı tủoı")
+ returnText("lủı sa hủı tủoı")
}
}()
- message = strings.Trim(
- header.ReplaceAllLiteralString(message, ""),
- " \n")
- parts := whitespace.Split(message, -1)
+
+ message = strings.TrimSpace(message)
+ parts := strings.Fields(message)
cmd, args, rest := parts[0], parts[1:], strings.Join(parts[1:], " ")
+ restQuery := url.QueryEscape(rest)
if strings.HasPrefix(cmd, "?%") {
- callback(cmd[1:] + " " + vietoaq.From(rest))
+ returnText(cmd[1:] + " " + vietoaq.From(rest))
return
}
if strings.HasPrefix(cmd, "%") {
@@ -154,52 +172,40 @@ func respond(message string, callback func(interface{})) {
}
if err == nil {
if n >= 0 {
- Toadua(args, callback, n, showNotes)
+ Toadua(args, returnText, n, showNotes)
} else {
- callback("less than zero, that's quite many")
+ returnText("less than zero, that's quite many")
}
return
}
}
switch cmd {
case "?":
- if strings.HasPrefix(strings.Trim(rest, " \n"), "?") {
+ if strings.HasPrefix(strings.TrimSpace(rest), "?") {
return
}
- callback(vietoaq.From(rest))
+ returnText(vietoaq.From(rest))
case "%serial":
if len(rest) == 0 {
- callback("please supply input")
- return
- }
- resp, err := get(fmt.Sprintf("http://localhost:%s/query?%s", spePort, rest))
- if err != nil {
- log.Print(err)
- callback("connectivity error")
+ returnText("please supply input")
return
}
- callback(string(resp))
+ returnFromRequest(get(fmt.Sprintf("http://localhost:%s/query?%s", ports.spe, restQuery)))
case "%nui":
if len(rest) == 0 {
- callback("please supply input")
- return
- }
- u, err := url.Parse(fmt.Sprintf("http://localhost:%s", nuiPort))
- resp, err := post(u.String(), "application/octet-stream",
- bytes.NewBufferString(rest))
- if err != nil {
- log.Print(err)
- callback("connectivity error")
+ returnText("please supply input")
return
}
- callback(string(resp))
+ u, _ := url.Parse(fmt.Sprintf("http://localhost:%s", ports.nui))
+ returnFromRequest(post(u.String(), "application/octet-stream",
+ bytes.NewBufferString(rest)))
case "%help":
- callback(HELP)
+ returnText(HELP)
case "%)":
- callback("(%")
+ returnText("(%")
case "%hoe", "%hoe!":
if len(rest) == 0 {
- callback("please supply input")
+ returnText("please supply input")
return
}
rest = strings.ReplaceAll(rest, "\t", "\\t")
@@ -234,20 +240,22 @@ func respond(message string, callback func(interface{})) {
"png:-").Output()
if err != nil {
log.Print(err)
- callback("lủı sa tủoı")
+ returnText("lủı sa tủoı")
return
}
- callback(out)
+ callback(Response{
+ Image: out,
+ })
case "%miu":
if len(rest) == 0 {
- callback("please supply input")
+ returnText("please supply input")
return
}
input := strings.TrimSpace(rest)
p := ast.NewParser(input)
text, err := p.Text()
if err != nil {
- callback("syntax error " + err.Error())
+ returnText("syntax error " + err.Error())
return
}
parse := ast.BracesString(text)
@@ -261,17 +269,48 @@ func respond(message string, callback func(interface{})) {
} else {
math = logic.PrettyString(stmt)
}
- callback(parse + math)
- // default:
- // if strings.HasPrefix(cmd, "%") {
- // callback(UNKNOWN)
- // }
+ returnText(parse + math)
+ case "%english", "%logic", "%structure":
+ returnFromRequest(get(fmt.Sprintf("https://zugai.toaq.me/zugai?to=%s&text=%s", cmd[1:], restQuery)))
+ case "%tree":
+ file, err := get(fmt.Sprintf("https://zugai.toaq.me/zugai?to=xbar-png&text=%s", restQuery))
+ if err != nil {
+ log.Println(err)
+ returnText(fmt.Sprintf("diagram not available: %s", err.Error()))
+ return
+ }
+ callback(Response{
+ Image: file,
+ })
+ case "%all":
+ sb := &strings.Builder{}
+ for i, name := range []string{"english", "structure", "logic"} {
+ res, err := get(fmt.Sprintf("https://zugai.toaq.me/zugai?to=%s&text=%s", name, restQuery))
+ if err != nil {
+ log.Println(err)
+ returnText(err.Error())
+ return
+ }
+ if i != 0 {
+ sb.WriteRune('\n')
+ }
+ sb.WriteString(strings.TrimSpace(string(res)))
+ }
+ file, err := get(fmt.Sprintf("https://zugai.toaq.me/zugai?to=xbar-png&text=%s", restQuery))
+ if err != nil {
+ log.Println(err)
+ fmt.Fprintf(sb, "diagram not available: %v", err.Error())
+ }
+ callback(Response{
+ Text: sb.String(),
+ Image: file,
+ })
}
}
-func Toadua(args []string, callback func(interface{}), howMany int, showNotes bool) {
+func Toadua(args []string, returnText func(string), howMany int, showNotes bool) {
if len(args) == 0 {
- callback("please supply a query")
+ returnText("please supply a query")
return
}
page, err := strconv.Atoi(args[0])
@@ -290,14 +329,14 @@ func Toadua(args []string, callback func(interface{}), howMany int, showNotes bo
})
if err != nil {
log.Print(err)
- callback("error")
+ returnText("error")
return
}
- raw, err := http.Post(fmt.Sprintf(`http://localhost:%s/api`, toaPort),
+ raw, err := http.Post(fmt.Sprintf(`http://localhost:%s/api`, ports.toa),
"application/json", bytes.NewReader(mars))
if err != nil {
log.Print(err)
- callback("connectivity error")
+ returnText(err.Error())
return
}
var resp struct {
@@ -318,27 +357,27 @@ func Toadua(args []string, callback func(interface{}), howMany int, showNotes bo
body, err := ioutil.ReadAll(raw.Body)
if err != nil {
log.Print(err)
- callback("connectivity error")
+ returnText(err.Error())
return
}
err = json.Unmarshal(body, &resp)
if err != nil {
log.Print(err)
- callback("parse error")
+ returnText("parse error")
return
}
if !resp.Success {
log.Print(resp.Error)
- callback("search failed: " + resp.Error)
+ returnText("search failed: " + resp.Error)
return
}
if len(resp.Entries) == 0 {
- callback("results empty")
+ returnText("results empty")
return
}
first := (page - 1) * howMany
if len(resp.Entries) <= first {
- callback(fmt.Sprintf("invalid page number (%d results)", len(resp.Entries)))
+ returnText(fmt.Sprintf("invalid page number (%d results)", len(resp.Entries)))
return
}
last := min(first+howMany, len(resp.Entries))
@@ -377,12 +416,12 @@ func Toadua(args []string, callback func(interface{}), howMany int, showNotes bo
old := soFar
soFar = b.String()
if len(soFar) > 2000 {
- callback(old)
+ returnText(old)
b.Reset()
b.WriteString(soFar[len(old):])
}
}
- callback(b.String())
+ returnText(b.String())
}
func ToaduaQuery(s string) interface{} {
diff --git a/go.mod b/go.mod
index 9f3762b..5f76146 100644
--- a/go.mod
+++ b/go.mod
@@ -1,9 +1,20 @@
module git.uakci.pl/toaq/nuogai
-go 1.13
+go 1.17
require (
- github.com/bwmarrin/discordgo v0.23.2
+ github.com/JohannesKaufmann/html-to-markdown v1.3.5
+ github.com/bwmarrin/discordgo v0.25.0
github.com/eaburns/toaq v0.0.0-20210614121731-80ccb209650b
golang.org/x/text v0.3.7
)
+
+require (
+ github.com/PuerkitoBio/goquery v1.5.1 // indirect
+ github.com/andybalholm/cascadia v1.1.0 // indirect
+ github.com/eaburns/peggy v1.0.0 // indirect
+ github.com/gorilla/websocket v1.4.2 // indirect
+ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect
+ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
+ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect
+)
diff --git a/go.sum b/go.sum
index f6405e6..7d6df2c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,13 @@
-github.com/bwmarrin/discordgo v0.23.2 h1:BzrtTktixGHIu9Tt7dEE6diysEF9HWnXeHuoJEt2fH4=
-github.com/bwmarrin/discordgo v0.23.2/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M=
+github.com/JohannesKaufmann/html-to-markdown v1.3.5 h1:FrP3D5IqpxkNOk97TvbFduSo0JQKs/ZpgjuxpmAEFRA=
+github.com/JohannesKaufmann/html-to-markdown v1.3.5/go.mod h1:JNSClIRYICFDiFhw6RBhBeWGnMSSKVZ6sPQA+TK4tyM=
+github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
+github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
+github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
+github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
+github.com/bwmarrin/discordgo v0.25.0 h1:NXhdfHRNxtwso6FPdzW2i3uBvvU7UIQTghmV2T4nqAs=
+github.com/bwmarrin/discordgo v0.25.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/eaburns/peggy v1.0.0 h1:cvZIO5GGq2Qy1l1Va0Mte6LFVTY6GtAGbzSvouFcjUk=
github.com/eaburns/peggy v1.0.0/go.mod h1:X2pbl0EV5erfnK8kSGwo0lBCgMGokvR1E6KerAoDKXg=
github.com/eaburns/pretty v1.0.0 h1:00W1wrrtMXUSqLPN0txS8j7g9qFXy6nA5vZVqVQOo6w=
@@ -8,12 +16,46 @@ github.com/eaburns/toaq v0.0.0-20210614121731-80ccb209650b h1:2mu0jEGoRhKMpkHMIn
github.com/eaburns/toaq v0.0.0-20210614121731-80ccb209650b/go.mod h1:FKayyKQuuBv0TnmWcuGr0MNMLeqpWLskPHeRWIEihoM=
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/sebdah/goldie/v2 v2.5.1 h1:hh70HvG4n3T3MNRJN2z/baxPR8xutxo7JVxyi2svl+s=
+github.com/sebdah/goldie/v2 v2.5.1/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
+github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/velour/chat v0.0.0-20180713122344-fd1d1606cb89/go.mod h1:ejwOYCjnDMyO5LXFXRARQJGBZ6xQJZ3rgAHE5drSuMM=
-golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 h1:y6ce7gCWtnH+m3dCjzQ1PCuwl28DDIc3VNnvY29DlIA=
-golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+github.com/yuin/goldmark v1.2.0 h1:WOOcyaJPlzb8fZ8TloxFe8QZkhOOJx87leDa9MIT9dc=
+github.com/yuin/goldmark v1.2.0/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b h1:7mWr3k41Qtv8XlltBkDkl8LoP3mpSgBW8BUoxtEdbXg=
+golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
diff --git a/gomod2nix.toml b/gomod2nix.toml
index 057fd50..f024818 100644
--- a/gomod2nix.toml
+++ b/gomod2nix.toml
@@ -1,33 +1,36 @@
-schema = 1
+schema = 3
[mod]
+ [mod."github.com/JohannesKaufmann/html-to-markdown"]
+ version = "v1.3.5"
+ hash = "sha256-4iVI80RTN8ZysUkCYa9vEq2M2kEMCG6OCwKG8Og/Xmg="
+ [mod."github.com/PuerkitoBio/goquery"]
+ version = "v1.5.1"
+ hash = "sha256-GqxIdhuN1L3enT8pNlWm+rmkdN5uMfF8TfpxhAHhEDQ="
+ [mod."github.com/andybalholm/cascadia"]
+ version = "v1.1.0"
+ hash = "sha256-mL40/Q9iXBzzMHwMomqTOpp9rnI/MRsufb5cIU1MMPg="
[mod."github.com/bwmarrin/discordgo"]
- version = "v0.23.2"
- hash = "sha256-yb+pC0SfqTZEgkYcBbpIhEjgAjr2pf9slve8mWtn47s="
+ version = "v0.25.0"
+ hash = "sha256-GKaTov5xrWZwdOyfGAtzJ84+Fbmd5bBHli/nMazTkjs="
[mod."github.com/eaburns/peggy"]
version = "v1.0.0"
hash = "sha256-L12jxdzIUNojdi2zhJbharGckTrsogifdTxsQuflLkQ="
- [mod."github.com/eaburns/pretty"]
- version = "v1.0.0"
- hash = "sha256-FpEhv4LBEs4gWnPWuodLfI09ePVsFpLG6C+aWVZeuDU="
[mod."github.com/eaburns/toaq"]
version = "v0.0.0-20210614121731-80ccb209650b"
hash = "sha256-OTfouK200vqAwXE5mz7Yxec5qhjkxnGOU+xr1IAkdUc="
- [mod."github.com/google/go-cmp"]
- version = "v0.3.1"
- hash = "sha256-oUPl5ojctSzSgOSdWB3HeQ5NOcTFtXly7HLSC2IiXLE="
[mod."github.com/gorilla/websocket"]
- version = "v1.4.1"
- hash = "sha256-+yo/0+zSqf2/dPZyp/9so21r7cfMx1yhxmmOzy2wwQ4="
- [mod."github.com/velour/chat"]
- version = "v0.0.0-20180713122344-fd1d1606cb89"
- hash = "sha256-pr0+BC/SNcajsJm57GjMDoc59GRX+yHD+9FmaGQLsqs="
+ version = "v1.4.2"
+ hash = "sha256-GhBLM/XTm2lFCyDvJbnCLAI2OyYXQV6W+jRPOQ1PdVY="
[mod."golang.org/x/crypto"]
- version = "v0.0.0-20181030102418-4d3f4d9ffa16"
- hash = "sha256-SIDwR1LoOc67PhvZFazkZSph9rUvuKy1MEFhbqp8emk="
+ version = "v0.0.0-20210421170649-83a5a9bb288b"
+ hash = "sha256-/yDFKCgawG9Othmh5y0O3Vx79JH2t4N7ecp1Nr+Li3o="
+ [mod."golang.org/x/net"]
+ version = "v0.0.0-20210226172049-e18ecbb05110"
+ hash = "sha256-4u7XpPV+Ersntau6zUiLuNsZQZCIIZs3RouHYl/I02o="
+ [mod."golang.org/x/sys"]
+ version = "v0.0.0-20201119102817-f84b799fce68"
+ hash = "sha256-EH5wVq9wsiELXlF4f/22eOyOtHrU3XZfTxyXHvCfeVM="
[mod."golang.org/x/text"]
version = "v0.3.7"
hash = "sha256-XH2pUzzQx95O0rak00grQvfACfL+EmZiV7ZzJBkX+XY="
- [mod."golang.org/x/tools"]
- version = "v0.0.0-20180917221912-90fa682c2a6e"
- hash = "sha256-NPoE7uVvwjV2PRIxI3DpegOZc8IuUs4XUJuH3ubKHJg="