From 5846dcdaf2e87b48f480830f5217eae9c43bb0d2 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sun, 18 Oct 2020 13:04:56 +0200 Subject: [PATCH] fix mroleplay enablerp/disalberp not working when RPCHAN is not provided, and fix variable typo. --- handlers/mroleplay.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/handlers/mroleplay.go b/handlers/mroleplay.go index 0267fe8..172966c 100644 --- a/handlers/mroleplay.go +++ b/handlers/mroleplay.go @@ -18,12 +18,19 @@ func MRoleplay(event *irc.Event, client *irc.Client) { sign = "-" } + // If the target is a channel, use RPCHAN or, if not stated, N. chanMode, chanModeOk := client.ISupport().Get("RPCHAN") channel := event.ChannelTarget() - if channel != nil && chanModeOk { - client.SendQueuedf("MODE %s %s%s", channel.Name(), sign, chanMode) + if channel != nil { + if chanModeOk { + client.SendQueuedf("MODE %s %s%s", channel.Name(), sign, chanMode) + } else { + client.SendQueuedf("MODE %s %sN", channel.Name(), sign) + } } + // Otherwise enable it on yourself, but only if RPUSER is set as that is not supported. + // by servers without this ISupport tag. userMode, userModeOk := client.ISupport().Get("RPUSER") query := event.QueryTarget() status := event.StatusTarget() @@ -49,9 +56,10 @@ func MRoleplay(event *irc.Event, client *irc.Client) { break } + // Some servers use this. lastSpace := strings.LastIndex(event.Text, " ") - lastParanthesis := strings.LastIndex(event.Text, "(") - if lastParanthesis != -1 && lastSpace != -1 && lastParanthesis == lastSpace+1 { + lastParentheses := strings.LastIndex(event.Text, "(") + if lastParentheses != -1 && lastSpace != -1 && lastParentheses == lastSpace+1 { event.Text = event.Text[:lastSpace] } }