|
|
|
@ -11,6 +11,21 @@ import (
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
|
|
"github.com/bwmarrin/discordgo"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
commandFormats = map[string]string{
|
|
|
|
|
|
|
|
// Moderator commands
|
|
|
|
|
|
|
|
"auser": "<Altspace VR Username> <Discord Mention> [Discord Emoji]",
|
|
|
|
|
|
|
|
"aemoji": "<Discord Mention> <Discord Emoji>",
|
|
|
|
|
|
|
|
"accept": "(As reply) <Discord Mention> [Discord Emoji]",
|
|
|
|
|
|
|
|
"deny": "(As reply)",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// User commands
|
|
|
|
|
|
|
|
"msg": "<Discord Mention> ...",
|
|
|
|
|
|
|
|
"status": "[Discord Mention...]",
|
|
|
|
|
|
|
|
"privacy": "<none|join|part|status|all>",
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func (b *Type) loadDiscordHandlers() {
|
|
|
|
func (b *Type) loadDiscordHandlers() {
|
|
|
|
// Admin commands
|
|
|
|
// Admin commands
|
|
|
|
// XXX: Promote
|
|
|
|
// XXX: Promote
|
|
|
|
@ -25,6 +40,7 @@ func (b *Type) loadDiscordHandlers() {
|
|
|
|
// User commands
|
|
|
|
// User commands
|
|
|
|
b.dg.Router.Route("msg", "Message an AltVR user", b.handleSendMessage)
|
|
|
|
b.dg.Router.Route("msg", "Message an AltVR user", b.handleSendMessage)
|
|
|
|
b.dg.Router.Route("status", "Show the current AltVR user status", b.handleStatusCheck)
|
|
|
|
b.dg.Router.Route("status", "Show the current AltVR user status", b.handleStatusCheck)
|
|
|
|
|
|
|
|
b.dg.Router.Route("privacy", "Enable or disable user priacy modes", b.handleUserPrivacy)
|
|
|
|
b.dg.Router.Default, _ = b.dg.Router.Route("default", "", b.handleDefault)
|
|
|
|
b.dg.Router.Default, _ = b.dg.Router.Route("default", "", b.handleDefault)
|
|
|
|
|
|
|
|
|
|
|
|
b.dg.Session.AddHandler(b.handleMessageReplies)
|
|
|
|
b.dg.Session.AddHandler(b.handleMessageReplies)
|
|
|
|
@ -222,6 +238,9 @@ func (b *Type) handleStatusCheck(ds *discordgo.Session, dm *discordgo.Message, c
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if upHas(du.Privacy, userPrivacyStatus) {
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
}
|
|
|
|
e := du.GetDiscordEmoji()
|
|
|
|
e := du.GetDiscordEmoji()
|
|
|
|
if e != "" {
|
|
|
|
if e != "" {
|
|
|
|
msg += e + " "
|
|
|
|
msg += e + " "
|
|
|
|
@ -252,6 +271,37 @@ func (b *Type) handleStatusCheck(ds *discordgo.Session, dm *discordgo.Message, c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (b *Type) handleUserPrivacy(ds *discordgo.Session, dm *discordgo.Message, ctx *mux.Context) {
|
|
|
|
|
|
|
|
//fmt.Printf("dm:\t%+v\nctv:\t%+v\n", dm, ctx)
|
|
|
|
|
|
|
|
if !b.checkUserRole(dm.Author.ID, RoleUser) {
|
|
|
|
|
|
|
|
b.replyPermissionDenied(ds, dm, ctx)
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
uu, _ := b.getUserByDiscordID(dm.Author.ID)
|
|
|
|
|
|
|
|
c := strings.TrimSpace(ctx.Content)
|
|
|
|
|
|
|
|
p := strings.Split(c, " ")
|
|
|
|
|
|
|
|
if len(p) != 2 {
|
|
|
|
|
|
|
|
b.replyInvalidCommandFormat(ds, dm, ctx, "privacy")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pp := p[1:][0]
|
|
|
|
|
|
|
|
if !utils.SliceContainsString([]string{"none", "join", "part", "status", "all"}, pp) {
|
|
|
|
|
|
|
|
b.replyInvalidCommandFormat(ds, dm, ctx, "privacy")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
uu.Privacy = userPrivacyFromString(pp)
|
|
|
|
|
|
|
|
b.dg.Session.ChannelMessageSendReply(dm.ChannelID,
|
|
|
|
|
|
|
|
b.getMessageString("all_done", uu),
|
|
|
|
|
|
|
|
&discordgo.MessageReference{
|
|
|
|
|
|
|
|
MessageID: dm.ID,
|
|
|
|
|
|
|
|
ChannelID: dm.ChannelID,
|
|
|
|
|
|
|
|
GuildID: dm.GuildID,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
if err := b.saveUserFile(); err != nil {
|
|
|
|
|
|
|
|
log.Printf("Error while saving user file: %+v\n", err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
** Moderator commands
|
|
|
|
** Moderator commands
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@ -309,6 +359,7 @@ func (b *Type) handleAssociateUser(ds *discordgo.Session, dm *discordgo.Message,
|
|
|
|
DiscordEmoji: e,
|
|
|
|
DiscordEmoji: e,
|
|
|
|
Role: role,
|
|
|
|
Role: role,
|
|
|
|
MsgMode: b.msgMode,
|
|
|
|
MsgMode: b.msgMode,
|
|
|
|
|
|
|
|
Privacy: userPrivacyDefault,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
b.dg.Session.ChannelMessageSendReply(dm.ChannelID,
|
|
|
|
b.dg.Session.ChannelMessageSendReply(dm.ChannelID,
|
|
|
|
b.getMessageString("all_done", uu),
|
|
|
|
b.getMessageString("all_done", uu),
|
|
|
|
@ -427,6 +478,7 @@ func (b *Type) handleAcceptFriendship(ds *discordgo.Session, dm *discordgo.Messa
|
|
|
|
DiscordEmoji: e,
|
|
|
|
DiscordEmoji: e,
|
|
|
|
Role: role,
|
|
|
|
Role: role,
|
|
|
|
MsgMode: b.msgMode,
|
|
|
|
MsgMode: b.msgMode,
|
|
|
|
|
|
|
|
Privacy: userPrivacyDefault,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
b.avr.AcceptFriendshipRequest(req.Friendship.FriendshipID)
|
|
|
|
b.avr.AcceptFriendshipRequest(req.Friendship.FriendshipID)
|
|
|
|
for k, fr := range b.frPending {
|
|
|
|
for k, fr := range b.frPending {
|
|
|
|
|