grim/wasdead
Clone
Summary
Browse
Changes
Graph
Overhaul the entire database layer force it to only use bitcask for the time being
draft
2019-05-10, Gary Kramlich
de78b69bcb67
Overhaul the entire database layer force it to only use bitcask for the time being
package
main
import
(
"fmt"
"os"
"os/signal"
"syscall"
"time"
log
"github.com/sirupsen/logrus"
"gopkg.in/alecthomas/kingpin.v3-unstable"
"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
()
startTime
time
.
Time
)
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
}
if
err
:=
database
.
Open
(
"db"
);
err
!=
nil
{
log
.
Errorf
(
"failed to open database: %v"
,
err
)
return
}
defer
database
.
Close
()
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
)
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
}
}
}