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
main
import
(
"fmt"
"os"
"os/signal"
"syscall"
"time"
"github.com/alecthomas/kingpin"
log
"github.com/sirupsen/logrus"
"bitbucket.org/TheToyz/nowdead/database"
"bitbucket.org/TheToyz/nowdead/discord"
"bitbucket.org/TheToyz/nowdead/presence"
"bitbucket.org/TheToyz/nowdead/twitch"
)
const
(
version
=
"0.1.0"
)
var
(
app
=
kingpin
.
New
(
"nowdead"
,
"discord auto announce streaming bot"
).
Version
(
version
)
discordToken
=
app
.
Flag
(
"discord-token"
,
"The bot token for discord"
).
Short
(
'd'
).
Envar
(
"NOWDEAD_DISCORD_TOKEN"
).
Required
().
String
()
twitchClientID
=
app
.
Flag
(
"twitch-client-id"
,
"The client id"
).
Short
(
't'
).
Envar
(
"NOWDEAD_TWITCH_CLIENT_ID"
).
Required
().
String
()
databaseType
=
app
.
Flag
(
"database"
,
"The database engine to use"
).
Default
(
"bitcask"
).
Enum
(
database
.
Supported
()
...
)
startTime
time
.
Time
db
database
.
Database
)
func
init
()
{
log
.
SetOutput
(
os
.
Stdout
)
log
.
SetLevel
(
log
.
DebugLevel
)
}
func
main
()
{
_
,
err
:=
app
.
Parse
(
os
.
Args
[
1
:])
if
err
!=
nil
{
fmt
.
Printf
(
"error: %v\n"
,
err
)
return
}
db
=
database
.
Get
(
*
databaseType
)
if
len
(
*
twitchClientID
)
>
0
{
provider
,
err
:=
twitch
.
New
(
*
twitchClientID
)
if
err
!=
nil
{
log
.
Panic
(
err
)
}
presence
.
AddProvider
(
"twitch.tv"
,
provider
)
log
.
Info
(
"Added twitch provider"
)
}
// create our error channel that's used by the various clients
errChan
:=
make
(
chan
error
,
1
)
// create the discord client
dc
,
err
:=
discord
.
New
(
*
discordToken
,
db
)
if
err
!=
nil
{
fmt
.
Println
(
"error creating Discord session,"
,
err
)
return
}
dc
.
Start
(
errChan
)
defer
dc
.
Shutdown
()
log
.
Info
(
"Connected to discord"
)
// create a channel for handling unix signals
signalChan
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
signalChan
,
syscall
.
SIGINT
,
syscall
.
SIGTERM
,
os
.
Interrupt
,
os
.
Kill
)
// start the main loop
log
.
Info
(
"Bot is now running. Press CTRL-C to exit."
)
for
{
select
{
case
err
:=
<-
errChan
:
if
err
!=
nil
{
log
.
Error
(
err
)
return
}
case
s
:=
<-
signalChan
:
log
.
Infof
(
"caught %s Exiting..."
,
s
)
return
}
}
}