arnaucube
arnaucube/twitterDM-to-matrixPublic Self-hosted repository
twitterDM-to-matrix/twitterStreamDM.go
twitterStreamDM.goRaw
 1package main
 2
 3import (
 4	"fmt"
 5	"log"
 6	"os"
 7	"os/signal"
 8	"syscall"
 9
10	"github.com/dghubble/go-twitter/twitter"
11)
12
13func stream(client *twitter.Client) {
14	// Convenience Demux demultiplexed stream messages
15	demux := twitter.NewSwitchDemux()
16
17	demux.All = func(message interface{}) {
18		//fmt.Println(message)
19	}
20	demux.DM = func(dm *twitter.DirectMessage) {
21		if dm.SenderScreenName != twitterConfig.ScreenName {
22			matrixSendMsg(dm.SenderScreenName, dm.Text, dm.CreatedAt)
23		}
24	}
25	demux.Event = func(event *twitter.Event) {
26		//fmt.Printf("%#v\n", event)
27	}
28
29	fmt.Println("Starting Stream...")
30
31	streamUserParams := &twitter.StreamUserParams{}
32	stream, err := client.Streams.User(streamUserParams)
33	if err != nil {
34		log.Fatal(err)
35	}
36
37	// Receive messages until stopped or stream quits
38	demux.HandleChan(stream.Messages)
39
40	ch := make(chan os.Signal)
41	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
42	log.Println(<-ch)
43
44	fmt.Println("Stopping Stream...")
45	stream.Stop()
46}