all repos — paprika @ master

go rewrite of taigabot

plugins/wolframalpha.go (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
package plugins

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"strings"

	"git.icyphox.sh/paprika/config"
	"gopkg.in/irc.v3"
)

func init() {
	Register(WolframAlpha{})
}

type WolframAlpha struct{}

func (WolframAlpha) Triggers() []string {
	return []string{".wa", ".calc"}
}

func (WolframAlpha) Execute(m *irc.Message) (string, error) {
	parts := strings.SplitN(m.Trailing(), " ", 2)
	trigger := parts[0]
	if len(parts) < 2 {
		return fmt.Sprintf("Usage: %s <query>", trigger), nil
	}
	query := url.QueryEscape(parts[1])

	appID := config.C.ApiKeys["wolframalpha"]
	url := fmt.Sprintf(
		"https://api.wolframalpha.com/v1/result?i=%s&appid=%s",
		query, appID,
	)

	r, err := http.Get(url)
	if err != nil || r.StatusCode != 200 {
		return "Error getting result", err
	}

	result, err := io.ReadAll(r.Body)
	if err != nil {
		return "Error getting result", err
	}
	return fmt.Sprintf("\x02Result:\x02 %s", string(result)), nil
}