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)
|
_ = 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:
|
default:
|
||||||
// Log inbox request
|
// Log inbox request
|
||||||
logInbox(actor, activity)
|
logInbox(actor, activity)
|
||||||
|
|
13
setup.go
13
setup.go
|
@ -11,6 +11,7 @@ var baseURL string
|
||||||
var storage = "storage"
|
var storage = "storage"
|
||||||
var actors = make(map[string]*Actor)
|
var actors = make(map[string]*Actor)
|
||||||
var defaultActor = ""
|
var defaultActor = ""
|
||||||
|
var telegramBot *Telegram
|
||||||
|
|
||||||
const libName = "jsonpub"
|
const libName = "jsonpub"
|
||||||
const version = "0.0.1"
|
const version = "0.0.1"
|
||||||
|
@ -31,6 +32,18 @@ func Setup() {
|
||||||
fmt.Println("Base URL:", baseURL)
|
fmt.Println("Base URL:", baseURL)
|
||||||
cwd, _ := os.Getwd()
|
cwd, _ := os.Getwd()
|
||||||
fmt.Println("Storage Location:", cwd+slash+storage)
|
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
|
// 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