Added random message mode, closes #24

master
Matthieu Lalonde 5 years ago
parent 4a0e920a01
commit dbd2fc12d3

@ -8,6 +8,7 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"strings"
"time" "time"
"git.lalonde.me/matth/AltVRBot/pkg/altvr" "git.lalonde.me/matth/AltVRBot/pkg/altvr"
@ -99,18 +100,21 @@ func (b *Type) setFlags() {
flag.StringVar(&b.AltVRPassword, "p", "", "AltVR Password") flag.StringVar(&b.AltVRPassword, "p", "", "AltVR Password")
} }
var mode string var mode string
flag.StringVar(&mode, "m", "", "Select the reply message mode <"+msgModeNormalString+"|"+msgModeRudeString+"|"+msgModeFlirtyString+">") ms := fmt.Sprintf("%s|%s|%s|%s", msgModeNormal, msgModeRude, msgModeFlirty, msgModeRandom)
flag.StringVar(&mode, "m", "", "Select the reply message mode <"+ms+">")
if mode == "" { if mode == "" {
if value, ok := os.LookupEnv("DG_MSG_MODE"); ok { if value, ok := os.LookupEnv("DG_MSG_MODE"); ok {
mode = value mode = value
} }
} }
switch mode { switch strings.ToLower(mode) {
case msgModeFlirtyString: case msgModeRandom.String():
b.msgMode = msgModeRandom
case msgModeFlirty.String():
b.msgMode = msgModeFlirty b.msgMode = msgModeFlirty
case msgModeRudeString: case msgModeRude.String():
b.msgMode = msgModeRude b.msgMode = msgModeRude
case msgModeNormalString: case msgModeNormal.String():
b.msgMode = msgModeNormal b.msgMode = msgModeNormal
default: default:
if mode != "" { if mode != "" {

@ -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 {

@ -9,22 +9,21 @@ import (
"git.lalonde.me/matth/AltVRBot/pkg/utils" "git.lalonde.me/matth/AltVRBot/pkg/utils"
) )
type msgMode uint type msgMode int
const ( const (
msgModeNone = iota msgModeRandom msgMode = -1 + iota
msgModeNone
msgModeNormal msgModeNormal
msgModeRude msgModeRude
msgModeFlirty msgModeFlirty
) )
const ( func (mm msgMode) String() string {
msgModeNormalString = "normal" return [...]string{"random", "none", "normal", "rude", "flirty"}[int(mm)+1]
msgModeRudeString = "rude" }
msgModeFlirtyString = "flirty"
)
type msgMap map[string]string const msgModeLast = msgModeFlirty
var ( var (
commandFormats = map[string]string{ commandFormats = map[string]string{
@ -111,6 +110,10 @@ func (b *Type) getMessageString(msgID string, params ...interface{}) string {
p = p[1:] p = p[1:]
} }
} }
if mode == msgModeRandom {
im := utils.RandIdx(int(msgModeFlirty)-1) + 1
mode = msgMode(im)
}
if mode == msgModeNone { if mode == msgModeNone {
mode = msgModeNormal mode = msgModeNormal
} }

Loading…
Cancel
Save