Send Telegram message on like and announce
This commit is contained in:
parent
05362ba66e
commit
8646b97d49
20
http.go
20
http.go
|
@ -128,6 +128,26 @@ func Serve() {
|
|||
_ = actor.RemoveFollower(object)
|
||||
}
|
||||
}
|
||||
case "Like":
|
||||
{
|
||||
likeActor, likeActorOk := activity["actor"].(string)
|
||||
likeObject, likeObjectOk := activity["object"].(string)
|
||||
if likeActorOk && likeObjectOk && len(likeActor) > 0 && len(likeObject) > 0 && strings.Contains(likeObject, actor.iri) {
|
||||
if telegramBot != nil {
|
||||
_ = telegramBot.Post(likeActor + " liked " + likeObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
case "Announce":
|
||||
{
|
||||
announceActor, announceActorOk := activity["actor"].(string)
|
||||
announceObject, announceObjectOk := activity["object"].(string)
|
||||
if announceActorOk && announceObjectOk && len(announceActor) > 0 && len(announceObject) > 0 && strings.Contains(announceObject, actor.iri) {
|
||||
if telegramBot != nil {
|
||||
_ = telegramBot.Post(announceActor + " announced " + announceObject)
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
// Log inbox request
|
||||
logInbox(actor, activity)
|
||||
|
|
13
setup.go
13
setup.go
|
@ -11,6 +11,7 @@ var baseURL string
|
|||
var storage = "storage"
|
||||
var actors = make(map[string]*Actor)
|
||||
var defaultActor = ""
|
||||
var telegramBot *Telegram
|
||||
|
||||
const libName = "jsonpub"
|
||||
const version = "0.0.1"
|
||||
|
@ -31,6 +32,18 @@ func Setup() {
|
|||
fmt.Println("Base URL:", baseURL)
|
||||
cwd, _ := os.Getwd()
|
||||
fmt.Println("Storage Location:", cwd+slash+storage)
|
||||
// Setup Telegram
|
||||
tgChat, tgChatOk := os.LookupEnv("TG_CHAT")
|
||||
tgBotToken, tgBotTokenOk := os.LookupEnv("TG_BOT_TOKEN")
|
||||
if tgChatOk && tgBotTokenOk {
|
||||
telegramBot = &Telegram{
|
||||
chat: tgChat,
|
||||
botToken: tgBotToken,
|
||||
}
|
||||
}
|
||||
if telegramBot != nil {
|
||||
fmt.Println("Telegram is active")
|
||||
}
|
||||
}
|
||||
|
||||
// Get actors from env vars
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type Telegram struct {
|
||||
chat string
|
||||
botToken string
|
||||
}
|
||||
|
||||
var telegramBaseUrl = "https://api.telegram.org/bot"
|
||||
|
||||
func (t *Telegram) Post(message string) error {
|
||||
params := url.Values{}
|
||||
params.Add("chat_id", t.chat)
|
||||
params.Add("text", message)
|
||||
tgUrl, err := url.Parse(telegramBaseUrl + t.botToken + "/sendMessage")
|
||||
if err != nil {
|
||||
return errors.New("failed to create Telegram request")
|
||||
}
|
||||
tgUrl.RawQuery = params.Encode()
|
||||
req, _ := http.NewRequest(http.MethodPost, tgUrl.String(), nil)
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil || resp.StatusCode != 200 {
|
||||
return errors.New("failed to send Telegram message")
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue