forked from pothtonswer/discordmuffin
Inital add of example bot
This commit is contained in:
parent
f9c5f2bdc8
commit
a5336e53da
3 changed files with 275 additions and 0 deletions
92
bot/admin.go
Normal file
92
bot/admin.go
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
//
|
||||||
|
func admin(line string) (response string) {
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
// trim any leading or trailing space off the whole line
|
||||||
|
line = strings.TrimSpace(line)
|
||||||
|
|
||||||
|
// split the command from the rest
|
||||||
|
split := strings.SplitN(line, " ", 2)
|
||||||
|
|
||||||
|
// store the command and payload seperately
|
||||||
|
command := strings.ToLower(split[0])
|
||||||
|
command = strings.TrimPrefix(command, "~")
|
||||||
|
|
||||||
|
var payload string = ""
|
||||||
|
if len(split) > 1 {
|
||||||
|
payload = split[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "help" {
|
||||||
|
response += fmt.Sprintln("`~help ...............` Display this help text")
|
||||||
|
response += fmt.Sprintln("`~username [string]...` Set login username to [string]")
|
||||||
|
response += fmt.Sprintln("`~password [string]...` Set login password to [string]")
|
||||||
|
response += fmt.Sprintln("`~login ..............` Login to Discord")
|
||||||
|
response += fmt.Sprintln("`~listen .............` Start websocket listener")
|
||||||
|
response += fmt.Sprintln("`~logout .............` Logout from Discord")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "username" {
|
||||||
|
Username = payload
|
||||||
|
response += "Done."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "password" {
|
||||||
|
Password = payload
|
||||||
|
response += "Done."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "login" {
|
||||||
|
Session.Token, err = Session.Login(Username, Password)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Unable to login to Discord.")
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
response += "Done."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "listen" {
|
||||||
|
|
||||||
|
// open connection
|
||||||
|
err = Session.Open()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do Handshake? (dumb name)
|
||||||
|
err = Session.Handshake()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now listen for events / messages
|
||||||
|
go Session.Listen()
|
||||||
|
response += "Done."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if command == "logout" {
|
||||||
|
err = Session.Logout()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Unable to logout from Discord.")
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
response += "Done."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response += "I'm sorry I don't understand that command. Try ~help"
|
||||||
|
return
|
||||||
|
}
|
61
bot/dgbot.go
Normal file
61
bot/dgbot.go
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"math/rand"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
Discord "github.com/bwmarrin/discordgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Global Variables
|
||||||
|
var (
|
||||||
|
Session Discord.Session
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Printf("\nDiscordgo Bot Starting.\n\n")
|
||||||
|
|
||||||
|
// Register all the Event Handlers
|
||||||
|
RegisterHandlers()
|
||||||
|
|
||||||
|
// read in the config file.
|
||||||
|
ParseFile()
|
||||||
|
|
||||||
|
// seed the random number generator
|
||||||
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
|
|
||||||
|
// main program loop to keep dgbot running
|
||||||
|
// will add stuff here to track goroutines
|
||||||
|
// and monitor for CTRL-C or other things.
|
||||||
|
for {
|
||||||
|
time.Sleep(1000 * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("\nDiscordgo Bot shutting down.\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseFile will read a file .dgbotrc and run all included
|
||||||
|
// commands
|
||||||
|
func ParseFile() {
|
||||||
|
file, err := os.Open(".dgbotrc")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
fmt.Println(scanner.Text())
|
||||||
|
fmt.Println(admin(scanner.Text()))
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := scanner.Err(); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
122
bot/events.go
Normal file
122
bot/events.go
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
Discord "github.com/bwmarrin/discordgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Registers all event handlers
|
||||||
|
func RegisterHandlers() {
|
||||||
|
|
||||||
|
Session = Discord.Session{
|
||||||
|
OnEvent: OnEvent,
|
||||||
|
OnReady: OnReady,
|
||||||
|
OnTypingStart: OnTypingStart,
|
||||||
|
OnMessageCreate: OnMessageCreate,
|
||||||
|
OnMessageUpdate: OnMessageUpdate,
|
||||||
|
OnMessageDelete: OnMessageDelete,
|
||||||
|
OnMessageAck: OnMessageAck,
|
||||||
|
OnVoiceStateUpdate: OnVoiceStateUpdate,
|
||||||
|
OnPresenceUpdate: OnPresenceUpdate,
|
||||||
|
OnChannelCreate: OnChannelCreate,
|
||||||
|
OnChannelUpdate: OnChannelUpdate,
|
||||||
|
OnGuildCreate: OnGuildCreate,
|
||||||
|
OnGuildUpdate: OnGuildUpdate,
|
||||||
|
OnGuildDelete: OnGuildDelete,
|
||||||
|
OnGuildRoleCreate: OnGuildRoleCreate,
|
||||||
|
OnGuildRoleUpdate: OnGuildRoleUpdate,
|
||||||
|
OnGuildRoleDelete: OnGuildRoleDelete,
|
||||||
|
OnGuildMemberAdd: OnGuildMemberAdd,
|
||||||
|
OnGuildMemberUpdate: OnGuildMemberUpdate,
|
||||||
|
OnGuildMemberRemove: OnGuildMemberRemove,
|
||||||
|
OnGuildIntegrationsUpdate: OnGuildIntegrationsUpdate,
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnEvent is called for unknown events or unhandled events. It provides
|
||||||
|
// a generic interface to handle them.
|
||||||
|
func OnEvent(s *Discord.Session, e Discord.Event) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnReady is called when Discordgo receives a READY event
|
||||||
|
// This event must be handled and must contain the Heartbeat call.
|
||||||
|
func OnReady(s *Discord.Session, st Discord.Ready) {
|
||||||
|
|
||||||
|
// start the Heartbeat
|
||||||
|
go s.Heartbeat(st.HeartbeatInterval)
|
||||||
|
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnTypingStart(s *Discord.Session, st Discord.TypingStart) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnPresenceUpdate(s *Discord.Session, st Discord.PresenceUpdate) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnMessageCreate(s *Discord.Session, m Discord.Message) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnMessageUpdate(s *Discord.Session, m Discord.Message) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnMessageAck(s *Discord.Session, st Discord.MessageAck) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnMessageDelete(s *Discord.Session, st Discord.MessageDelete) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnVoiceStateUpdate(s *Discord.Session, st Discord.VoiceState) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnChannelCreate(s *Discord.Session, st Discord.Channel) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnChannelUpdate(s *Discord.Session, st Discord.Channel) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildCreate(s *Discord.Session, st Discord.Guild) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildUpdate(s *Discord.Session, st Discord.Guild) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
func OnGuildDelete(s *Discord.Session, st Discord.Guild) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildRoleCreate(s *Discord.Session, st Discord.GuildRole) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
func OnGuildRoleUpdate(s *Discord.Session, st Discord.GuildRole) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
func OnGuildRoleDelete(s *Discord.Session, st Discord.GuildRoleDelete) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
func OnGuildMemberAdd(s *Discord.Session, st Discord.Member) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildMemberUpdate(s *Discord.Session, st Discord.Member) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildMemberRemove(s *Discord.Session, st Discord.Member) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
||||||
|
|
||||||
|
func OnGuildIntegrationsUpdate(s *Discord.Session, st Discord.GuildIntegrationsUpdate) {
|
||||||
|
// Add code here to handle this event.
|
||||||
|
}
|
Loading…
Reference in a new issue