jlelse
/
jsonpub
Archived
1
Fork 0

Send Telegram message on like and announce

This commit is contained in:
Jan-Lukas Else 2020-04-22 10:06:48 +02:00
parent 05362ba66e
commit 8646b97d49
3 changed files with 64 additions and 0 deletions

20
http.go
View File

@ -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)

View File

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

31
telegram.go Normal file
View File

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