Added random message mode, closes #24

master
Matthieu Lalonde 5 years ago
parent 4a0e920a01
commit dbd2fc12d3

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

@ -11,6 +11,21 @@ import (
"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() {
// Admin commands
// XXX: Promote
@ -25,6 +40,7 @@ func (b *Type) loadDiscordHandlers() {
// User commands
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("privacy", "Enable or disable user priacy modes", b.handleUserPrivacy)
b.dg.Router.Default, _ = b.dg.Router.Route("default", "", b.handleDefault)
b.dg.Session.AddHandler(b.handleMessageReplies)
@ -222,6 +238,9 @@ func (b *Type) handleStatusCheck(ds *discordgo.Session, dm *discordgo.Message, c
if err != nil {
continue
}
if upHas(du.Privacy, userPrivacyStatus) {
continue
}
e := du.GetDiscordEmoji()
if 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
*/
@ -309,6 +359,7 @@ func (b *Type) handleAssociateUser(ds *discordgo.Session, dm *discordgo.Message,
DiscordEmoji: e,
Role: role,
MsgMode: b.msgMode,
Privacy: userPrivacyDefault,
})
b.dg.Session.ChannelMessageSendReply(dm.ChannelID,
b.getMessageString("all_done", uu),
@ -427,6 +478,7 @@ func (b *Type) handleAcceptFriendship(ds *discordgo.Session, dm *discordgo.Messa
DiscordEmoji: e,
Role: role,
MsgMode: b.msgMode,
Privacy: userPrivacyDefault,
})
b.avr.AcceptFriendshipRequest(req.Friendship.FriendshipID)
for k, fr := range b.frPending {

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

Loading…
Cancel
Save