From aea31da9c0a17768e1485ee3898d90493e794e4b Mon Sep 17 00:00:00 2001 From: sirrow Date: Sat, 15 Mar 2025 17:38:20 +0900 Subject: [PATCH] Init Just read from discord channel --- discord/discordread.go | 50 ++++++++++++++++++++++++++++++++++++++++++ go.mod | 11 ++++++++++ main.go | 21 ++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 discord/discordread.go create mode 100644 go.mod create mode 100644 main.go diff --git a/discord/discordread.go b/discord/discordread.go new file mode 100644 index 0000000..3e82e98 --- /dev/null +++ b/discord/discordread.go @@ -0,0 +1,50 @@ +package discord + +import ( + "fmt" + + "github.com/bwmarrin/discordgo" +) + +type discord struct { + Token string + ChannelID string + dgsession *discordgo.Session +} + +func Discord(token string, channelId string) *discord { + return &discord{ + Token: token, + ChannelID: channelId, + } +} + +func (d *discord) BeginRead(tweetchannel chan<- string) { + d.read(tweetchannel) +} + +func (d *discord) read(tweetchannel chan<- string) { + dgsession, err := discordgo.New("Bot " + d.Token) + if err != nil { + return + } + + dgsession.AddHandler(func(s *discordgo.Session, m *discordgo.MessageCreate) { + if m.ChannelID == d.ChannelID { + tweetchannel <- m.Content + } + }) + d.dgsession = dgsession + + errOpen := dgsession.Open() + if errOpen != nil { + fmt.Println(errOpen) + } +} +func Read() string { + return "discord" +} + +func (d *discord) Write(str string) { + d.dgsession.ChannelMessageSend(d.ChannelID, str) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..8e64493 --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module tweetdistributor + +go 1.24.1 + +require github.com/bwmarrin/discordgo v0.28.1 + +require ( + github.com/gorilla/websocket v1.4.2 // indirect + golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect +) diff --git a/main.go b/main.go new file mode 100644 index 0000000..503cc1b --- /dev/null +++ b/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + "os" + "tweetdistributor/discord" +) + +func main() { + fmt.Println("Hello, World!") + d := discord.Discord(os.Getenv("DISCORD_TOKEN"), os.Getenv("DISCORD_CHANNEL")) + + tweetchannel := make(chan string, 1) + d.BeginRead(tweetchannel) + + d.Write("Hello, World!") + + for tweet := range tweetchannel { + fmt.Println(tweet) + } +}