mirror of
https://github.com/lyx0/nourybot.git
synced 2024-11-13 19:49:55 +01:00
add pastebin upload functionality and implement it for uer and command debugging
This commit is contained in:
parent
10bd7c0342
commit
90031bfe40
|
@ -177,7 +177,13 @@ func (app *application) DebugCommand(name string, message twitch.PrivateMessage)
|
|||
cmd.Help,
|
||||
)
|
||||
|
||||
//app.Send(message.Channel, reply)
|
||||
resp, err := app.uploadPaste(reply)
|
||||
if err != nil {
|
||||
app.Log.Errorln("Could not upload paste:", err)
|
||||
app.Send(message.Channel, "Something went wrong FeelsBadMan")
|
||||
return
|
||||
}
|
||||
app.Send(message.Channel, resp)
|
||||
app.SendEmail(fmt.Sprintf("DEBUG for command %s", name), reply)
|
||||
return
|
||||
} else {
|
||||
|
@ -191,6 +197,13 @@ func (app *application) DebugCommand(name string, message twitch.PrivateMessage)
|
|||
)
|
||||
|
||||
//app.Send(message.Channel, reply)
|
||||
resp, err := app.uploadPaste(reply)
|
||||
if err != nil {
|
||||
app.Log.Errorln("Could not upload paste:", err)
|
||||
app.Send(message.Channel, "Something went wrong FeelsBadMan")
|
||||
return
|
||||
}
|
||||
app.Send(message.Channel, resp)
|
||||
app.SendEmail(fmt.Sprintf("DEBUG for command %s", name), reply)
|
||||
return
|
||||
}
|
||||
|
|
60
cmd/nourybot/paste.go
Normal file
60
cmd/nourybot/paste.go
Normal file
|
@ -0,0 +1,60 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// uploadPaste uploads a given text to a pastebin site and returns the link
|
||||
//
|
||||
// this whole function was pretty much yoinked from here
|
||||
// https://github.com/zneix/haste-client/blob/master/main.go <3
|
||||
func (app *application) uploadPaste(text string) (string, error) {
|
||||
var hasteURL = "https://haste.noury.ee"
|
||||
var apiRoute = "/documents"
|
||||
var httpClient = &http.Client{Timeout: 10 * time.Second}
|
||||
|
||||
type pasteResponse struct {
|
||||
Key string `json:"key,omitempty"`
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", hasteURL+apiRoute, bytes.NewBufferString(text))
|
||||
if err != nil {
|
||||
app.Log.Error("Could not upload paste:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
req.Header.Set("User-Agent", fmt.Sprintf("nourybot"))
|
||||
|
||||
resp, err := httpClient.Do(req)
|
||||
if err != nil {
|
||||
app.Log.Error("Error while sending HTTP request:", err)
|
||||
return "", err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusMultipleChoices {
|
||||
app.Log.Errorln("Failed to upload data, server responded with", resp.StatusCode)
|
||||
return "", err
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
app.Log.Errorln("Error while reading response:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
jsonResponse := new(pasteResponse)
|
||||
if err := json.Unmarshal(body, jsonResponse); err != nil {
|
||||
app.Log.Fatalln("Error while unmarshalling JSON response:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
finalURL := hasteURL + "/" + jsonResponse.Key
|
||||
|
||||
return finalURL, nil
|
||||
}
|
|
@ -30,9 +30,22 @@ func (app *application) DebugUser(login string, message twitch.PrivateMessage) {
|
|||
app.Send(message.Channel, reply)
|
||||
return
|
||||
} else {
|
||||
subject := fmt.Sprintf("DEBUG for %v", login)
|
||||
body := fmt.Sprintf("DEBUG information for user %v\n\nid=%v \nlogin=%v \nlevel=%v \nlocation=%v \nlastfm=%v", login, user.TwitchID, user.Login, user.Level, user.Location, user.LastFMUsername)
|
||||
subject := fmt.Sprintf("DEBUG for user %v", login)
|
||||
body := fmt.Sprintf("id=%v \nlogin=%v \nlevel=%v \nlocation=%v \nlastfm=%v",
|
||||
user.TwitchID,
|
||||
user.Login,
|
||||
user.Level,
|
||||
user.Location,
|
||||
user.LastFMUsername,
|
||||
)
|
||||
|
||||
resp, err := app.uploadPaste(body)
|
||||
if err != nil {
|
||||
app.Log.Errorln("Could not upload paste:", err)
|
||||
app.Send(message.Channel, "Something went wrong FeelsBadMan")
|
||||
return
|
||||
}
|
||||
app.Send(message.Channel, resp)
|
||||
app.SendEmail(subject, body)
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue