Added .expraddserver (.exas) which will server as a server-only alternative to '.exa' in case users want to override default Admin permissions with .dpo

This commit is contained in:
Kwoth
2022-09-03 17:21:38 +02:00
parent 3f56e5b651
commit 6f75161c80
5 changed files with 56 additions and 13 deletions

View File

@@ -1,7 +1,5 @@
#nullable disable #nullable disable
using Nadeko.Common;
namespace NadekoBot.Modules.NadekoExpressions; namespace NadekoBot.Modules.NadekoExpressions;
[Name("Expressions")] [Name("Expressions")]
@@ -25,15 +23,10 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
=> (ctx.Guild is null && _creds.IsOwner(ctx.User)) => (ctx.Guild is null && _creds.IsOwner(ctx.User))
|| (ctx.Guild is not null && ((IGuildUser)ctx.User).GuildPermissions.Administrator); || (ctx.Guild is not null && ((IGuildUser)ctx.User).GuildPermissions.Administrator);
[Cmd] private async Task ExprAddInternalAsync(string key, string message)
public async Task ExprAdd(string key, [Leftover] string message)
{ {
if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key)) if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key))
return;
if (!AdminInGuildOrOwnerInDm())
{ {
await ReplyErrorLocalizedAsync(strs.expr_insuff_perms);
return; return;
} }
@@ -48,12 +41,43 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
message.Length > 1024 ? GetText(strs.redacted_too_long) : message)); message.Length > 1024 ? GetText(strs.redacted_too_long) : message));
} }
[Cmd]
[UserPerm(GuildPerm.Administrator)]
public async Task ExprAddServer(string key, [Leftover] string message)
{
if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key))
{
return;
}
await ExprAddInternalAsync(key, message);
}
[Cmd]
public async Task ExprAdd(string key, [Leftover] string message)
{
if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key))
{
return;
}
if (!AdminInGuildOrOwnerInDm())
{
await ReplyErrorLocalizedAsync(strs.expr_insuff_perms);
return;
}
await ExprAddInternalAsync(key, message);
}
[Cmd] [Cmd]
public async Task ExprEdit(kwum id, [Leftover] string message) public async Task ExprEdit(kwum id, [Leftover] string message)
{ {
var channel = ctx.Channel as ITextChannel; var channel = ctx.Channel as ITextChannel;
if (string.IsNullOrWhiteSpace(message) || id < 0) if (string.IsNullOrWhiteSpace(message) || id < 0)
{
return; return;
}
if ((channel is null && !_creds.IsOwner(ctx.User)) if ((channel is null && !_creds.IsOwner(ctx.User))
|| (channel is not null && !((IGuildUser)ctx.User).GuildPermissions.Administrator)) || (channel is not null && !((IGuildUser)ctx.User).GuildPermissions.Administrator))
@@ -74,7 +98,9 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
message.Length > 1024 ? GetText(strs.redacted_too_long) : message)); message.Length > 1024 ? GetText(strs.redacted_too_long) : message));
} }
else else
{
await ReplyErrorLocalizedAsync(strs.expr_no_found_id); await ReplyErrorLocalizedAsync(strs.expr_no_found_id);
}
} }
[Cmd] [Cmd]
@@ -82,7 +108,9 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
public async Task ExprList(int page = 1) public async Task ExprList(int page = 1)
{ {
if (--page < 0 || page > 999) if (--page < 0 || page > 999)
{
return; return;
}
var expressions = _service.GetExpressionsFor(ctx.Guild?.Id); var expressions = _service.GetExpressionsFor(ctx.Guild?.Id);
@@ -153,7 +181,9 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
.AddField(GetText(strs.response), ex.Response.TrimTo(1024))); .AddField(GetText(strs.response), ex.Response.TrimTo(1024)));
} }
else else
{
await ReplyErrorLocalizedAsync(strs.expr_no_found_id); await ReplyErrorLocalizedAsync(strs.expr_no_found_id);
}
} }
[Cmd] [Cmd]
@@ -192,7 +222,9 @@ public partial class NadekoExpressions : NadekoModule<NadekoExpressionsService>
succ.Add(emojiStr); succ.Add(emojiStr);
if (succ.Count >= 3) if (succ.Count >= 3)
{
break; break;
}
} }
catch { } catch { }
} }

View File

@@ -37,7 +37,7 @@ boost:
boostmsg: boostmsg:
- boostmsg - boostmsg
boostdel: boostdel:
- boostdel - boostde
logserver: logserver:
- logserver - logserver
logignore: logignore:
@@ -1287,6 +1287,11 @@ expradd:
- exadd - exadd
- exa - exa
- acr - acr
expraddserver:
- expradds
- exadds
- exas
- expraddserver
exprlist: exprlist:
- exprlist - exprlist
- exl - exl

View File

@@ -1,5 +1,5 @@
# DO NOT CHANGE # DO NOT CHANGE
version: 3 version: 4
# Most commands, when executed, have a small colored line # Most commands, when executed, have a small colored line
# next to the response. The color depends whether the command # next to the response. The color depends whether the command
# is completed, errored or in progress (pending) # is completed, errored or in progress (pending)
@@ -18,6 +18,8 @@ defaultLocale: en-US
# Style in which executed commands will show up in the console. # Style in which executed commands will show up in the console.
# Allowed values: Simple, Normal, None # Allowed values: Simple, Normal, None
consoleOutputType: Normal consoleOutputType: Normal
# Whether the bot will check for new releases every hour
checkForUpdates: true
# Do you want any messages sent by users in Bot's DM to be forwarded to the owner(s)? # Do you want any messages sent by users in Bot's DM to be forwarded to the owner(s)?
forwardMessages: false forwardMessages: false
# Do you want the message to be forwarded only to the first owner specified in the list of owners (in creds.yml), # Do you want the message to be forwarded only to the first owner specified in the list of owners (in creds.yml),

View File

@@ -197,7 +197,11 @@ iamnot:
args: args:
- "Gamer" - "Gamer"
expradd: expradd:
desc: "Add an expression with a trigger and a response. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global expression. Guide here: <https://nadekobot.readthedocs.io/en/latest/custom-reactions/>" desc: "Add an expression with a trigger and a response. Bot will post a response whenever someone types the trigger word. Running this command in server requires the Administration permission. Running this command in DM is Bot Owner only and adds a new global expression. Guide here: <https://nadekobot.readthedocs.io/en/latest/custom-reactions/>"
args:
- "\"hello\" Hi there %user.mention%"
expraddserver:
desc: "Add an expression with a trigger and a response in this server. Bot will post a response whenever someone types the trigger word. Guide here: <https://nadekobot.readthedocs.io/en/latest/custom-reactions/>"
args: args:
- "\"hello\" Hi there %user.mention%" - "\"hello\" Hi there %user.mention%"
exprlist: exprlist: