grim/wasdead
Clone
Summary
Browse
Changes
Graph
Make the bot only look at messages that mention it
draft
2019-04-07, Gary Kramlich
9c111fecaf67
Make the bot only look at messages that mention it
package
discord
import
(
"errors"
"fmt"
"github.com/bwmarrin/discordgo"
"github.com/dustin/go-humanize"
log
"github.com/sirupsen/logrus"
"bitbucket.org/TheToyz/nowdead/presence"
)
func
(
c
*
DiscordClient
)
presenceHandler
(
s
*
discordgo
.
Session
,
p
*
discordgo
.
PresenceUpdate
)
{
if
p
.
Game
==
nil
{
return
}
if
p
.
Game
.
Type
!=
discordgo
.
GameTypeStreaming
{
return
}
guild
,
_
:=
c
.
client
.
Guild
(
p
.
GuildID
)
log
.
Infof
(
"server: %s username: %s is now streaming"
,
guild
.
Name
,
p
.
Presence
.
User
.
Username
)
presence
,
_
:=
presence
.
GetPresence
(
p
.
Game
.
URL
)
if
err
:=
c
.
sendPresence
(
p
.
GuildID
,
presence
);
err
!=
nil
{
log
.
Warnf
(
"failed to send presence to guild %s: %v, %v"
,
p
.
GuildID
,
err
,
presence
)
}
}
func
(
c
*
DiscordClient
)
sendPresence
(
guild
string
,
presence
presence
.
Presence
)
error
{
channelID
:=
c
.
db
.
GetChannel
(
guild
)
if
channelID
==
""
{
return
errors
.
New
(
"No channel set"
)
}
return
c
.
sendPresenceChannel
(
channelID
,
presence
)
}
func
(
c
*
DiscordClient
)
sendPresenceChannel
(
channelID
string
,
presence
presence
.
Presence
)
error
{
_
,
err
:=
c
.
client
.
ChannelMessageSendEmbed
(
channelID
,
&
discordgo
.
MessageEmbed
{
Image
:
&
discordgo
.
MessageEmbedImage
{
URL
:
presence
.
ProfileImageURL
,
},
Author
:
&
discordgo
.
MessageEmbedAuthor
{
URL
:
presence
.
URL
,
Name
:
fmt
.
Sprintf
(
"%s is now live"
,
presence
.
Username
),
},
Thumbnail
:
&
discordgo
.
MessageEmbedThumbnail
{
URL
:
presence
.
ThumbnailURL
,
},
Fields
:
[]
*
discordgo
.
MessageEmbedField
{
&
discordgo
.
MessageEmbedField
{
Name
:
"Title"
,
Value
:
presence
.
Title
,
},
&
discordgo
.
MessageEmbedField
{
Name
:
"Viewers"
,
Value
:
humanize
.
Comma
(
presence
.
Viewers
),
Inline
:
true
,
},
&
discordgo
.
MessageEmbedField
{
Name
:
"Language"
,
Value
:
presence
.
Language
,
Inline
:
true
,
},
},
},
)
return
err
}