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 } |