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}