Add translations for the role command

This commit is contained in:
runebaas 2019-05-12 13:47:15 +02:00
parent 4b67bb51d1
commit 68a62ab4ec
No known key found for this signature in database
GPG key ID: 2677AF508D0300D6
2 changed files with 62 additions and 14 deletions

View file

@ -10,6 +10,7 @@ using Geekbot.net.Database.Models;
using Geekbot.net.Lib.CommandPreconditions; using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling; using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions; using Geekbot.net.Lib.Extensions;
using Geekbot.net.Lib.Localization;
using Geekbot.net.Lib.ReactionListener; using Geekbot.net.Lib.ReactionListener;
namespace Geekbot.net.Commands.Admin namespace Geekbot.net.Commands.Admin
@ -21,12 +22,14 @@ namespace Geekbot.net.Commands.Admin
private readonly DatabaseContext _database; private readonly DatabaseContext _database;
private readonly IErrorHandler _errorHandler; private readonly IErrorHandler _errorHandler;
private readonly IReactionListener _reactionListener; private readonly IReactionListener _reactionListener;
private readonly TranslationHandler _translationHandler;
public Role(DatabaseContext database, IErrorHandler errorHandler, IReactionListener reactionListener) public Role(DatabaseContext database, IErrorHandler errorHandler, IReactionListener reactionListener, TranslationHandler translationHandler)
{ {
_database = database; _database = database;
_errorHandler = errorHandler; _errorHandler = errorHandler;
_reactionListener = reactionListener; _reactionListener = reactionListener;
_translationHandler = translationHandler;
} }
[Command(RunMode = RunMode.Async)] [Command(RunMode = RunMode.Async)]
@ -35,16 +38,17 @@ namespace Geekbot.net.Commands.Admin
{ {
try try
{ {
var transContext = await _translationHandler.GetGuildContext(Context);
var roles = _database.RoleSelfService.Where(g => g.GuildId.Equals(Context.Guild.Id.AsLong())).ToList(); var roles = _database.RoleSelfService.Where(g => g.GuildId.Equals(Context.Guild.Id.AsLong())).ToList();
if (roles.Count == 0) if (roles.Count == 0)
{ {
await ReplyAsync("There are no roles configured for this server"); await ReplyAsync(transContext.GetString("NoRolesConfigured"));
return; return;
} }
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine($"**Self Service Roles on {Context.Guild.Name}**"); sb.AppendLine(transContext.GetString("ListHeader", Context.Guild.Name));
sb.AppendLine("To get a role, use `!role name`"); sb.AppendLine(transContext.GetString("ListInstruction"));
foreach (var role in roles) sb.AppendLine($"- {role.WhiteListName}"); foreach (var role in roles) sb.AppendLine($"- {role.WhiteListName}");
await ReplyAsync(sb.ToString()); await ReplyAsync(sb.ToString());
} }
@ -60,6 +64,7 @@ namespace Geekbot.net.Commands.Admin
{ {
try try
{ {
var transContext = await _translationHandler.GetGuildContext(Context);
var roleName = roleNameRaw.ToLower(); var roleName = roleNameRaw.ToLower();
var roleFromDb = _database.RoleSelfService.FirstOrDefault(e => var roleFromDb = _database.RoleSelfService.FirstOrDefault(e =>
e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName)); e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName));
@ -69,23 +74,23 @@ namespace Geekbot.net.Commands.Admin
var role = Context.Guild.Roles.First(r => r.Id == roleFromDb.RoleId.AsUlong()); var role = Context.Guild.Roles.First(r => r.Id == roleFromDb.RoleId.AsUlong());
if (role == null) if (role == null)
{ {
await ReplyAsync("That role doesn't seem to exist"); await ReplyAsync(transContext.GetString("RoleNotFound"));
return; return;
} }
if (guildUser.RoleIds.Contains(role.Id)) if (guildUser.RoleIds.Contains(role.Id))
{ {
await guildUser.RemoveRoleAsync(role); await guildUser.RemoveRoleAsync(role);
await ReplyAsync($"Removed you from {role.Name}"); await ReplyAsync(transContext.GetString("RemovedUserFromRole", role.Name));
return; return;
} }
await guildUser.AddRoleAsync(role); await guildUser.AddRoleAsync(role);
await ReplyAsync($"Added you to {role.Name}"); await ReplyAsync(transContext.GetString("AddedUserFromRole", role.Name));
return; return;
} }
await ReplyAsync("That role doesn't seem to exist"); await ReplyAsync(transContext.GetString("RoleNotFound"));
} }
catch (HttpException e) catch (HttpException e)
{ {
@ -104,9 +109,10 @@ namespace Geekbot.net.Commands.Admin
{ {
try try
{ {
var transContext = await _translationHandler.GetGuildContext(Context);
if (role.IsManaged) if (role.IsManaged)
{ {
await ReplyAsync("You can't add a role that is managed by discord"); await ReplyAsync(transContext.GetString("CannotAddManagedRole"));
return; return;
} }
@ -116,8 +122,7 @@ namespace Geekbot.net.Commands.Admin
|| role.Permissions.BanMembers || role.Permissions.BanMembers
|| role.Permissions.KickMembers) || role.Permissions.KickMembers)
{ {
await ReplyAsync( await ReplyAsync(transContext.GetString("CannotAddDangerousRole"));
"You cannot add that role to self service because it contains one or more dangerous permissions");
return; return;
} }
@ -128,7 +133,7 @@ namespace Geekbot.net.Commands.Admin
WhiteListName = roleName WhiteListName = roleName
}); });
await _database.SaveChangesAsync(); await _database.SaveChangesAsync();
await ReplyAsync($"Added {role.Name} to the whitelist"); await ReplyAsync(transContext.GetString("CannotAddDangerousRole", role.Name));
} }
catch (Exception e) catch (Exception e)
{ {
@ -143,17 +148,18 @@ namespace Geekbot.net.Commands.Admin
{ {
try try
{ {
var transContext = await _translationHandler.GetGuildContext(Context);
var roleFromDb = _database.RoleSelfService.FirstOrDefault(e => var roleFromDb = _database.RoleSelfService.FirstOrDefault(e =>
e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName)); e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName));
if (roleFromDb != null) if (roleFromDb != null)
{ {
_database.RoleSelfService.Remove(roleFromDb); _database.RoleSelfService.Remove(roleFromDb);
await _database.SaveChangesAsync(); await _database.SaveChangesAsync();
await ReplyAsync($"Removed {roleName} from the whitelist"); await ReplyAsync(transContext.GetString("RemovedRoleFromWhitelist", roleName));
return; return;
} }
await ReplyAsync("There is not whitelisted role with that name"); await ReplyAsync(transContext.GetString("RoleNotFound"));
} }
catch (Exception e) catch (Exception e)
{ {

View file

@ -148,5 +148,47 @@
"EN": ["You ate {0} cookies, you've only got {1} cookies left"], "EN": ["You ate {0} cookies, you've only got {1} cookies left"],
"CHDE": ["Du hesch {0} guetzli gesse und hesch jezt no {1} übrig"] "CHDE": ["Du hesch {0} guetzli gesse und hesch jezt no {1} übrig"]
} }
},
"role": {
"NoRolesConfigured": {
"EN": ["There are no roles configured for this server"],
"CHDE": ["Es sind kei rolle für dä server konfiguriert"]
},
"ListHeader": {
"EN": ["**Self Service Roles on {0}**"],
"CHDE": ["**Self Service Rollene uf {0}**"]
},
"ListInstruction": {
"EN": ["To get a role, use `!role [name]`"],
"CHDE": ["Zum ä rolle becho, schriib `!role [name]`"]
},
"RoleNotFound": {
"EN": ["That role doesn't exist or is not on the whitelist"],
"CHDE": ["Die rolle gids nid or isch nid uf dr whitelist"]
},
"RemovedUserFromRole": {
"EN": ["Removed you from {0}"],
"CHDE": ["Han di entfernt vo {0}"]
},
"AddedUserFromRole": {
"EN": ["Added you to {0}"],
"CHDE": ["Han di hinzue gfüegt zu {0}"]
},
"CannotAddManagedRole": {
"EN": ["You can't add a role that is managed by discord"],
"CHDE": ["Du chasch kei rolle hinzuefüge wo verwalted wird vo discord"]
},
"CannotAddDangerousRole": {
"EN": ["You cannot add that role to self service because it contains one or more dangerous permissions"],
"CHDE": ["Du chasch die rolle nid hinzuefüge will er ein oder mehreri gföhrlichi berechtigunge het"]
},
"AddedRoleToWhitelist": {
"EN": ["Added {0} to the whitelist"],
"CHDE": ["{0} isch zur whitelist hinzuegfüegt"]
},
"RemovedRoleFromWhitelist": {
"EN": ["Removed {0} from the whitelist"],
"CHDE": ["{0} isch vo dr whitelist glöscht"]
}
} }
} }