2019-03-12 22:37:06 +01:00
package main
import (
"fmt"
"github.com/bwmarrin/discordgo"
"log"
"strconv"
"strings"
"time"
)
var tempChannels [ ] * discordgo . Channel
func parseVoiceChannelCommand ( session * discordgo . Session , message * discordgo . MessageCreate ) {
userLimit , err := strconv . Atoi ( strings . Split ( message . Content , " " ) [ 1 ] )
if err != nil {
session . ChannelMessageSend ( message . ChannelID , "Error: Expected a number after !vc" )
log . Printf ( "Incorrect syntax for !vc, “%s” triggered by %s" , message . Content , userToString ( message . Author ) )
return
}
if userLimit > 99 {
2019-03-13 20:44:17 +01:00
session . ChannelMessageSend ( message . ChannelID , fmt . Sprintf ( "Als ob %d Leute *mit dir* in einen Channel wollen." , userLimit - 1 ) )
2019-03-12 22:37:06 +01:00
log . Printf ( "%s tried to create a channel with %d slots" , userToString ( message . Author ) , userLimit )
return
}
createData := discordgo . GuildChannelCreateData {
Name : fmt . Sprintf ( "%s’s Volatile Corner" , message . Author . Username ) ,
Type : discordgo . ChannelTypeGuildVoice ,
UserLimit : userLimit ,
2019-03-13 20:44:17 +01:00
ParentID : "410162599762853909" ,
2019-03-12 22:37:06 +01:00
}
channel , err := session . GuildChannelCreateComplex ( message . GuildID , createData )
if err != nil {
session . ChannelMessageSend ( message . ChannelID , "Couldn’t create the voice channel. Please bug kageru about this." )
log . Printf ( "Failed to create voice channel, %s" , err )
return
}
tempChannels = append ( tempChannels , channel )
2019-03-13 20:44:17 +01:00
err = session . GuildMemberMove ( config . ServerID , message . Author . ID , channel . ID )
if err != nil {
log . Printf ( "Couldn’t move user %s: %s" , userToString ( message . Author ) , err )
}
session . ChannelMessageSend ( message . ChannelID , "haaaai~" )
log . Printf ( "Created channel %s" , channel . ID )
2019-03-12 22:37:06 +01:00
}
func checkAndDeleteUnusedChannels ( session * discordgo . Session ) {
for true {
2019-03-13 20:44:17 +01:00
time . Sleep ( 15 * time . Second )
2019-03-12 22:37:06 +01:00
for i , channel := range tempChannels {
if channelIsEmpty ( channel . ID ) {
session . ChannelDelete ( channel . ID )
tempChannels = remove ( tempChannels , i )
2019-03-13 20:44:17 +01:00
log . Printf ( "Deleted channel %s" , channel . ID )
log . Printf ( "Tempchannels: %d" , len ( tempChannels ) )
2019-03-12 22:37:06 +01:00
break
}
}
}
}
func channelIsEmpty ( channelID string ) bool {
for _ , voiceState := range getServer ( ) . VoiceStates {
if channelID == voiceState . ChannelID {
return false
}
}
return true
}