diff --git a/Geekbot.net/Commands/Admin/Admin.cs b/Geekbot.net/Commands/Admin/Admin.cs
index 15b4df1..6377c60 100644
--- a/Geekbot.net/Commands/Admin/Admin.cs
+++ b/Geekbot.net/Commands/Admin/Admin.cs
@@ -7,6 +7,7 @@ using Discord.Commands;
using Discord.WebSocket;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -17,7 +18,7 @@ namespace Geekbot.net.Commands.Admin
[Group("admin")]
[RequireUserPermission(GuildPermission.Administrator)]
[DisableInDirectMessage]
- public class Admin : ModuleBase
+ public class Admin : GeekbotBase
{
private readonly DiscordSocketClient _client;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Admin/Mod.cs b/Geekbot.net/Commands/Admin/Mod.cs
index 1188504..a2a2f4e 100644
--- a/Geekbot.net/Commands/Admin/Mod.cs
+++ b/Geekbot.net/Commands/Admin/Mod.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.UserRepository;
@@ -15,7 +16,7 @@ namespace Geekbot.net.Commands.Admin
[RequireUserPermission(GuildPermission.ManageMessages)]
[RequireUserPermission(GuildPermission.ManageRoles)]
[DisableInDirectMessage]
- public class Mod : ModuleBase
+ public class Mod : GeekbotBase
{
private readonly DiscordSocketClient _client;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Admin/Owner/Owner.cs b/Geekbot.net/Commands/Admin/Owner/Owner.cs
index 996d848..e395a44 100644
--- a/Geekbot.net/Commands/Admin/Owner/Owner.cs
+++ b/Geekbot.net/Commands/Admin/Owner/Owner.cs
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.GlobalSettings;
using Geekbot.net.Lib.Logger;
@@ -12,7 +13,7 @@ namespace Geekbot.net.Commands.Admin.Owner
{
[Group("owner")]
[RequireOwner]
- public class Owner : ModuleBase
+ public class Owner : GeekbotBase
{
private readonly DiscordSocketClient _client;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Admin/Role.cs b/Geekbot.net/Commands/Admin/Role.cs
index 85b7160..22b4249 100644
--- a/Geekbot.net/Commands/Admin/Role.cs
+++ b/Geekbot.net/Commands/Admin/Role.cs
@@ -7,29 +7,27 @@ using Discord.Commands;
using Discord.Net;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
-using Geekbot.net.Lib.Localization;
using Geekbot.net.Lib.ReactionListener;
namespace Geekbot.net.Commands.Admin
{
[Group("role")]
[DisableInDirectMessage]
- public class Role : ModuleBase
+ public class Role : GeekbotBase
{
private readonly DatabaseContext _database;
private readonly IErrorHandler _errorHandler;
private readonly IReactionListener _reactionListener;
- private readonly ITranslationHandler _translationHandler;
- public Role(DatabaseContext database, IErrorHandler errorHandler, IReactionListener reactionListener, ITranslationHandler translationHandler)
+ public Role(DatabaseContext database, IErrorHandler errorHandler, IReactionListener reactionListener)
{
_database = database;
_errorHandler = errorHandler;
_reactionListener = reactionListener;
- _translationHandler = translationHandler;
}
[Command(RunMode = RunMode.Async)]
@@ -38,17 +36,16 @@ namespace Geekbot.net.Commands.Admin
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
var roles = _database.RoleSelfService.Where(g => g.GuildId.Equals(Context.Guild.Id.AsLong())).ToList();
if (roles.Count == 0)
{
- await ReplyAsync(transContext.GetString("NoRolesConfigured"));
+ await ReplyAsync(Context.Translations.GetString("NoRolesConfigured"));
return;
}
var sb = new StringBuilder();
- sb.AppendLine(transContext.GetString("ListHeader", Context.Guild.Name));
- sb.AppendLine(transContext.GetString("ListInstruction"));
+ sb.AppendLine(Context.Translations.GetString("ListHeader", Context.Guild.Name));
+ sb.AppendLine(Context.Translations.GetString("ListInstruction"));
foreach (var role in roles) sb.AppendLine($"- {role.WhiteListName}");
await ReplyAsync(sb.ToString());
}
@@ -64,7 +61,6 @@ namespace Geekbot.net.Commands.Admin
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
var roleName = roleNameRaw.ToLower();
var roleFromDb = _database.RoleSelfService.FirstOrDefault(e =>
e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName));
@@ -74,23 +70,23 @@ namespace Geekbot.net.Commands.Admin
var role = Context.Guild.Roles.First(r => r.Id == roleFromDb.RoleId.AsUlong());
if (role == null)
{
- await ReplyAsync(transContext.GetString("RoleNotFound"));
+ await ReplyAsync(Context.Translations.GetString("RoleNotFound"));
return;
}
if (guildUser.RoleIds.Contains(role.Id))
{
await guildUser.RemoveRoleAsync(role);
- await ReplyAsync(transContext.GetString("RemovedUserFromRole", role.Name));
+ await ReplyAsync(Context.Translations.GetString("RemovedUserFromRole", role.Name));
return;
}
await guildUser.AddRoleAsync(role);
- await ReplyAsync(transContext.GetString("AddedUserFromRole", role.Name));
+ await ReplyAsync(Context.Translations.GetString("AddedUserFromRole", role.Name));
return;
}
- await ReplyAsync(transContext.GetString("RoleNotFound"));
+ await ReplyAsync(Context.Translations.GetString("RoleNotFound"));
}
catch (HttpException e)
{
@@ -109,10 +105,9 @@ namespace Geekbot.net.Commands.Admin
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
if (role.IsManaged)
{
- await ReplyAsync(transContext.GetString("CannotAddManagedRole"));
+ await ReplyAsync(Context.Translations.GetString("CannotAddManagedRole"));
return;
}
@@ -122,7 +117,7 @@ namespace Geekbot.net.Commands.Admin
|| role.Permissions.BanMembers
|| role.Permissions.KickMembers)
{
- await ReplyAsync(transContext.GetString("CannotAddDangerousRole"));
+ await ReplyAsync(Context.Translations.GetString("CannotAddDangerousRole"));
return;
}
@@ -133,7 +128,7 @@ namespace Geekbot.net.Commands.Admin
WhiteListName = roleName
});
await _database.SaveChangesAsync();
- await ReplyAsync(transContext.GetString("CannotAddDangerousRole", role.Name));
+ await ReplyAsync(Context.Translations.GetString("CannotAddDangerousRole", role.Name));
}
catch (Exception e)
{
@@ -148,18 +143,17 @@ namespace Geekbot.net.Commands.Admin
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
var roleFromDb = _database.RoleSelfService.FirstOrDefault(e =>
e.GuildId.Equals(Context.Guild.Id.AsLong()) && e.WhiteListName.Equals(roleName));
if (roleFromDb != null)
{
_database.RoleSelfService.Remove(roleFromDb);
await _database.SaveChangesAsync();
- await ReplyAsync(transContext.GetString("RemovedRoleFromWhitelist", roleName));
+ await ReplyAsync(Context.Translations.GetString("RemovedRoleFromWhitelist", roleName));
return;
}
- await ReplyAsync(transContext.GetString("RoleNotFound"));
+ await ReplyAsync(Context.Translations.GetString("RoleNotFound"));
}
catch (Exception e)
{
diff --git a/Geekbot.net/Commands/Games/Pokedex.cs b/Geekbot.net/Commands/Games/Pokedex.cs
index a0d2ae0..32fd8eb 100644
--- a/Geekbot.net/Commands/Games/Pokedex.cs
+++ b/Geekbot.net/Commands/Games/Pokedex.cs
@@ -3,13 +3,14 @@ using System.Linq;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
using PokeAPI;
namespace Geekbot.net.Commands.Games
{
- public class Pokedex : ModuleBase
+ public class Pokedex : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Games/Roll.cs b/Geekbot.net/Commands/Games/Roll.cs
index dfecb13..965f9c1 100644
--- a/Geekbot.net/Commands/Games/Roll.cs
+++ b/Geekbot.net/Commands/Games/Roll.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.AlmostRedis;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -13,18 +14,16 @@ using StackExchange.Redis;
namespace Geekbot.net.Commands.Games
{
- public class Roll : ModuleBase
+ public class Roll : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IAlmostRedis _redis;
- private readonly ITranslationHandler _translation;
private readonly DatabaseContext _database;
private readonly IRandomNumberGenerator _randomNumberGenerator;
- public Roll(IAlmostRedis redis, IErrorHandler errorHandler, ITranslationHandler translation, DatabaseContext database, IRandomNumberGenerator randomNumberGenerator)
+ public Roll(IAlmostRedis redis, IErrorHandler errorHandler, DatabaseContext database, IRandomNumberGenerator randomNumberGenerator)
{
_redis = redis;
- _translation = translation;
_database = database;
_randomNumberGenerator = randomNumberGenerator;
_errorHandler = errorHandler;
@@ -39,7 +38,6 @@ namespace Geekbot.net.Commands.Games
var number = _randomNumberGenerator.Next(1, 100);
var guess = 1000;
int.TryParse(stuff, out guess);
- var transContext = await _translation.GetGuildContext(Context);
if (guess <= 100 && guess > 0)
{
var prevRoll = _redis.Db.HashGet($"{Context.Guild.Id}:RollsPrevious2", Context.Message.Author.Id).ToString()?.Split('|');
@@ -47,17 +45,17 @@ namespace Geekbot.net.Commands.Games
{
if (prevRoll[0] == guess.ToString() && DateTime.Parse(prevRoll[1]) > DateTime.Now.AddDays(-1))
{
- await ReplyAsync(transContext.GetString("NoPrevGuess", Context.Message.Author.Mention));
+ await ReplyAsync(Context.Translations.GetString("NoPrevGuess", Context.Message.Author.Mention));
return;
}
}
_redis.Db.HashSet($"{Context.Guild.Id}:RollsPrevious2", new[] {new HashEntry(Context.Message.Author.Id, $"{guess}|{DateTime.Now}")});
- await ReplyAsync(transContext.GetString("Rolled", Context.Message.Author.Mention, number, guess));
+ await ReplyAsync(Context.Translations.GetString("Rolled", Context.Message.Author.Mention, number, guess));
if (guess == number)
{
- await ReplyAsync(transContext.GetString("Gratz", Context.Message.Author));
+ await ReplyAsync(Context.Translations.GetString("Gratz", Context.Message.Author));
_redis.Db.HashIncrement($"{Context.Guild.Id}:Rolls", Context.User.Id.ToString());
var user = await GetUser(Context.User.Id);
user.Rolls += 1;
@@ -67,7 +65,7 @@ namespace Geekbot.net.Commands.Games
}
else
{
- await ReplyAsync(transContext.GetString("RolledNoGuess", Context.Message.Author.Mention, number));
+ await ReplyAsync(Context.Translations.GetString("RolledNoGuess", Context.Message.Author.Mention, number));
}
}
catch (Exception e)
diff --git a/Geekbot.net/Commands/Integrations/Google/Google.cs b/Geekbot.net/Commands/Integrations/Google/Google.cs
index db059b4..76c3795 100644
--- a/Geekbot.net/Commands/Integrations/Google/Google.cs
+++ b/Geekbot.net/Commands/Integrations/Google/Google.cs
@@ -4,13 +4,14 @@ using System.Net;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.GlobalSettings;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Integrations.Google
{
- public class Google : ModuleBase
+ public class Google : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IGlobalSettings _globalSettings;
diff --git a/Geekbot.net/Commands/Integrations/MagicTheGathering.cs b/Geekbot.net/Commands/Integrations/MagicTheGathering.cs
index ef16fee..a9d2251 100644
--- a/Geekbot.net/Commands/Integrations/MagicTheGathering.cs
+++ b/Geekbot.net/Commands/Integrations/MagicTheGathering.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.Converters;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -11,7 +12,7 @@ using MtgApiManager.Lib.Service;
namespace Geekbot.net.Commands.Integrations
{
- public class MagicTheGathering : ModuleBase
+ public class MagicTheGathering : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IMtgManaConverter _manaConverter;
diff --git a/Geekbot.net/Commands/Integrations/Mal.cs b/Geekbot.net/Commands/Integrations/Mal.cs
index ecc91bf..ace49f4 100644
--- a/Geekbot.net/Commands/Integrations/Mal.cs
+++ b/Geekbot.net/Commands/Integrations/Mal.cs
@@ -4,13 +4,14 @@ using System.Web;
using System.Xml;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.Clients;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
namespace Geekbot.net.Commands.Integrations
{
- public class Mal : ModuleBase
+ public class Mal : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IMalClient _malClient;
diff --git a/Geekbot.net/Commands/Integrations/UbranDictionary/UrbanDictionary.cs b/Geekbot.net/Commands/Integrations/UbranDictionary/UrbanDictionary.cs
index 4f29f10..420d2b4 100644
--- a/Geekbot.net/Commands/Integrations/UbranDictionary/UrbanDictionary.cs
+++ b/Geekbot.net/Commands/Integrations/UbranDictionary/UrbanDictionary.cs
@@ -4,13 +4,14 @@ using System.Net.Http;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Integrations.UbranDictionary
{
- public class UrbanDictionary : ModuleBase
+ public class UrbanDictionary : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Integrations/Wikipedia.cs b/Geekbot.net/Commands/Integrations/Wikipedia.cs
index 9124670..1bc2390 100644
--- a/Geekbot.net/Commands/Integrations/Wikipedia.cs
+++ b/Geekbot.net/Commands/Integrations/Wikipedia.cs
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Geekbot.net.Database;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
using HtmlAgilityPack;
@@ -14,7 +15,7 @@ using WikipediaApi.Page;
namespace Geekbot.net.Commands.Integrations
{
- public class Wikipedia : ModuleBase
+ public class Wikipedia : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IWikipediaClient _wikipediaClient;
diff --git a/Geekbot.net/Commands/Integrations/Youtube.cs b/Geekbot.net/Commands/Integrations/Youtube.cs
index 1672bab..26f0e9c 100644
--- a/Geekbot.net/Commands/Integrations/Youtube.cs
+++ b/Geekbot.net/Commands/Integrations/Youtube.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.GlobalSettings;
using Google.Apis.Services;
@@ -8,7 +9,7 @@ using Google.Apis.YouTube.v3;
namespace Geekbot.net.Commands.Integrations
{
- public class Youtube : ModuleBase
+ public class Youtube : GeekbotBase
{
private readonly IGlobalSettings _globalSettings;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/BenedictCumberbatchNameGenerator.cs b/Geekbot.net/Commands/Randomness/BenedictCumberbatchNameGenerator.cs
index 501f891..fa734fd 100644
--- a/Geekbot.net/Commands/Randomness/BenedictCumberbatchNameGenerator.cs
+++ b/Geekbot.net/Commands/Randomness/BenedictCumberbatchNameGenerator.cs
@@ -2,12 +2,13 @@ using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.RandomNumberGenerator;
namespace Geekbot.net.Commands.Randomness
{
- public class BenedictCumberbatchNameGenerator : ModuleBase
+ public class BenedictCumberbatchNameGenerator : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IRandomNumberGenerator _randomNumberGenerator;
diff --git a/Geekbot.net/Commands/Randomness/Cat/Cat.cs b/Geekbot.net/Commands/Randomness/Cat/Cat.cs
index 4d43a4c..b752955 100644
--- a/Geekbot.net/Commands/Randomness/Cat/Cat.cs
+++ b/Geekbot.net/Commands/Randomness/Cat/Cat.cs
@@ -3,12 +3,13 @@ using System.Net.Http;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Randomness.Cat
{
- public class Cat : ModuleBase
+ public class Cat : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/CheckEm.cs b/Geekbot.net/Commands/Randomness/CheckEm.cs
index f8191ad..790dce8 100644
--- a/Geekbot.net/Commands/Randomness/CheckEm.cs
+++ b/Geekbot.net/Commands/Randomness/CheckEm.cs
@@ -3,12 +3,13 @@ using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Media;
namespace Geekbot.net.Commands.Randomness
{
- public class CheckEm : ModuleBase
+ public class CheckEm : GeekbotBase
{
private readonly IMediaProvider _checkEmImages;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/Chuck/ChuckNorrisJokes.cs b/Geekbot.net/Commands/Randomness/Chuck/ChuckNorrisJokes.cs
index 07ea41f..ceb559c 100644
--- a/Geekbot.net/Commands/Randomness/Chuck/ChuckNorrisJokes.cs
+++ b/Geekbot.net/Commands/Randomness/Chuck/ChuckNorrisJokes.cs
@@ -3,12 +3,13 @@ using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Randomness.Chuck
{
- public class ChuckNorrisJokes : ModuleBase
+ public class ChuckNorrisJokes : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/Dad/DadJokes.cs b/Geekbot.net/Commands/Randomness/Dad/DadJokes.cs
index 2c51781..4bb204b 100644
--- a/Geekbot.net/Commands/Randomness/Dad/DadJokes.cs
+++ b/Geekbot.net/Commands/Randomness/Dad/DadJokes.cs
@@ -3,12 +3,13 @@ using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Randomness.Dad
{
- public class DadJokes : ModuleBase
+ public class DadJokes : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/Dog/Dog.cs b/Geekbot.net/Commands/Randomness/Dog/Dog.cs
index 176cbad..6ea0d25 100644
--- a/Geekbot.net/Commands/Randomness/Dog/Dog.cs
+++ b/Geekbot.net/Commands/Randomness/Dog/Dog.cs
@@ -3,12 +3,13 @@ using System.Net.Http;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Randomness.Dog
{
- public class Dog : ModuleBase
+ public class Dog : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/EightBall.cs b/Geekbot.net/Commands/Randomness/EightBall.cs
index d07451d..e72f85e 100644
--- a/Geekbot.net/Commands/Randomness/EightBall.cs
+++ b/Geekbot.net/Commands/Randomness/EightBall.cs
@@ -2,11 +2,12 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
namespace Geekbot.net.Commands.Randomness
{
- public class EightBall : ModuleBase
+ public class EightBall : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/Fortune.cs b/Geekbot.net/Commands/Randomness/Fortune.cs
index d4f6b5f..582cc75 100644
--- a/Geekbot.net/Commands/Randomness/Fortune.cs
+++ b/Geekbot.net/Commands/Randomness/Fortune.cs
@@ -1,10 +1,11 @@
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.Media;
namespace Geekbot.net.Commands.Randomness
{
- public class Fortune : ModuleBase
+ public class Fortune : GeekbotBase
{
private readonly IFortunesProvider _fortunes;
diff --git a/Geekbot.net/Commands/Randomness/Gdq.cs b/Geekbot.net/Commands/Randomness/Gdq.cs
index 2685b33..3bed944 100644
--- a/Geekbot.net/Commands/Randomness/Gdq.cs
+++ b/Geekbot.net/Commands/Randomness/Gdq.cs
@@ -2,11 +2,12 @@
using System.Net;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
namespace Geekbot.net.Commands.Randomness
{
- public class Gdq : ModuleBase
+ public class Gdq : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/Kanye/Kanye.cs b/Geekbot.net/Commands/Randomness/Kanye/Kanye.cs
index 42a6ca7..a37fbc3 100644
--- a/Geekbot.net/Commands/Randomness/Kanye/Kanye.cs
+++ b/Geekbot.net/Commands/Randomness/Kanye/Kanye.cs
@@ -4,13 +4,14 @@ using System.Net.Http.Headers;
using System.Threading.Tasks;
using Discord.Commands;
using Geekbot.net.Commands.Randomness.Dad;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Microsoft.AspNetCore.Hosting.Internal;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Randomness.Kanye
{
- public class Kanye : ModuleBase
+ public class Kanye : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Randomness/RandomAnimals.cs b/Geekbot.net/Commands/Randomness/RandomAnimals.cs
index 8562908..8a15551 100644
--- a/Geekbot.net/Commands/Randomness/RandomAnimals.cs
+++ b/Geekbot.net/Commands/Randomness/RandomAnimals.cs
@@ -1,11 +1,12 @@
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.Media;
namespace Geekbot.net.Commands.Randomness
{
- public class RandomAnimals : ModuleBase
+ public class RandomAnimals : GeekbotBase
{
private readonly IMediaProvider _mediaProvider;
diff --git a/Geekbot.net/Commands/Randomness/Ship.cs b/Geekbot.net/Commands/Randomness/Ship.cs
index 2571891..3f43710 100644
--- a/Geekbot.net/Commands/Randomness/Ship.cs
+++ b/Geekbot.net/Commands/Randomness/Ship.cs
@@ -5,13 +5,14 @@ using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
using Geekbot.net.Lib.RandomNumberGenerator;
namespace Geekbot.net.Commands.Randomness
{
- public class Ship : ModuleBase
+ public class Ship : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly IRandomNumberGenerator _randomNumberGenerator;
diff --git a/Geekbot.net/Commands/Randomness/Slap.cs b/Geekbot.net/Commands/Randomness/Slap.cs
index 20e83c3..3165581 100644
--- a/Geekbot.net/Commands/Randomness/Slap.cs
+++ b/Geekbot.net/Commands/Randomness/Slap.cs
@@ -6,12 +6,13 @@ using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
namespace Geekbot.net.Commands.Randomness
{
- public class Slap : ModuleBase
+ public class Slap : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly DatabaseContext _database;
@@ -24,7 +25,7 @@ namespace Geekbot.net.Commands.Randomness
[Command("slap", RunMode = RunMode.Async)]
[Summary("slap someone")]
- public async Task Slapper([Summary("@someone")] IUser user)
+ public async Task Slapper([Summary("@someone")] IGuildUser user)
{
try
{
@@ -79,7 +80,7 @@ namespace Geekbot.net.Commands.Randomness
"powerless banhammer"
};
- await ReplyAsync($"{Context.User.Username} slapped {user.Username} with a {things[new Random().Next(things.Count - 1)]}");
+ await ReplyAsync($"{Context.GuildUser.Nickname} slapped {user.Nickname} with a {things[new Random().Next(things.Count - 1)]}");
await UpdateRecieved(user.Id);
await UpdateGiven(Context.User.Id);
diff --git a/Geekbot.net/Commands/Rpg/Cookies.cs b/Geekbot.net/Commands/Rpg/Cookies.cs
index f22eccf..69e3d68 100644
--- a/Geekbot.net/Commands/Rpg/Cookies.cs
+++ b/Geekbot.net/Commands/Rpg/Cookies.cs
@@ -5,6 +5,7 @@ using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -15,18 +16,16 @@ namespace Geekbot.net.Commands.Rpg
{
[DisableInDirectMessage]
[Group("cookies")]
- public class Cookies : ModuleBase
+ public class Cookies : GeekbotBase
{
private readonly DatabaseContext _database;
private readonly IErrorHandler _errorHandler;
- private readonly ITranslationHandler _translation;
private readonly IRandomNumberGenerator _randomNumberGenerator;
- public Cookies(DatabaseContext database, IErrorHandler errorHandler, ITranslationHandler translation , IRandomNumberGenerator randomNumberGenerator)
+ public Cookies(DatabaseContext database, IErrorHandler errorHandler, IRandomNumberGenerator randomNumberGenerator)
{
_database = database;
_errorHandler = errorHandler;
- _translation = translation;
_randomNumberGenerator = randomNumberGenerator;
}
@@ -36,18 +35,17 @@ namespace Geekbot.net.Commands.Rpg
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var actor = await GetUser(Context.User.Id);
if (actor.LastPayout.Value.AddHours(24) > DateTimeOffset.Now)
{
- var formatedWaitTime = transContext.FormatDateTimeAsRemaining(actor.LastPayout.Value.AddHours(24));
- await ReplyAsync(transContext.GetString("WaitForMoreCookies", formatedWaitTime));
+ var formatedWaitTime = Context.Translations.FormatDateTimeAsRemaining(actor.LastPayout.Value.AddHours(24));
+ await ReplyAsync(Context.Translations.GetString("WaitForMoreCookies", formatedWaitTime));
return;
}
actor.Cookies += 10;
actor.LastPayout = DateTimeOffset.Now;
await SetUser(actor);
- await ReplyAsync(transContext.GetString("GetCookies", 10, actor.Cookies));
+ await ReplyAsync(Context.Translations.GetString("GetCookies", 10, actor.Cookies));
}
catch (Exception e)
@@ -62,9 +60,8 @@ namespace Geekbot.net.Commands.Rpg
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var actor = await GetUser(Context.User.Id);
- await ReplyAsync(transContext.GetString("InYourJar", actor.Cookies));
+ await ReplyAsync(Context.Translations.GetString("InYourJar", actor.Cookies));
}
catch (Exception e)
{
@@ -78,12 +75,11 @@ namespace Geekbot.net.Commands.Rpg
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var giver = await GetUser(Context.User.Id);
if (giver.Cookies < amount)
{
- await ReplyAsync(transContext.GetString("NotEnoughToGive"));
+ await ReplyAsync(Context.Translations.GetString("NotEnoughToGive"));
return;
}
@@ -95,7 +91,7 @@ namespace Geekbot.net.Commands.Rpg
await SetUser(giver);
await SetUser(taker);
- await ReplyAsync(transContext.GetString("Given", amount, user.Username));
+ await ReplyAsync(Context.Translations.GetString("Given", amount, user.Username));
}
catch (Exception e)
{
@@ -109,12 +105,11 @@ namespace Geekbot.net.Commands.Rpg
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var actor = await GetUser(Context.User.Id);
if (actor.Cookies < 5)
{
- await ReplyAsync(transContext.GetString("NotEnoughCookiesToEat"));
+ await ReplyAsync(Context.Translations.GetString("NotEnoughCookiesToEat"));
return;
}
@@ -123,7 +118,7 @@ namespace Geekbot.net.Commands.Rpg
await SetUser(actor);
- await ReplyAsync(transContext.GetString("AteCookies", amount, actor.Cookies));
+ await ReplyAsync(Context.Translations.GetString("AteCookies", amount, actor.Cookies));
}
catch (Exception e)
{
diff --git a/Geekbot.net/Commands/User/GuildInfo.cs b/Geekbot.net/Commands/User/GuildInfo.cs
index 6c8b941..e55506c 100644
--- a/Geekbot.net/Commands/User/GuildInfo.cs
+++ b/Geekbot.net/Commands/User/GuildInfo.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Geekbot.net.Database;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -11,7 +12,7 @@ using Geekbot.net.Lib.Levels;
namespace Geekbot.net.Commands.User
{
- public class GuildInfo : ModuleBase
+ public class GuildInfo : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly DatabaseContext _database;
diff --git a/Geekbot.net/Commands/User/Karma.cs b/Geekbot.net/Commands/User/Karma.cs
index ed221ff..fd4a82d 100644
--- a/Geekbot.net/Commands/User/Karma.cs
+++ b/Geekbot.net/Commands/User/Karma.cs
@@ -5,25 +5,23 @@ using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
-using Geekbot.net.Lib.Localization;
namespace Geekbot.net.Commands.User
{
[DisableInDirectMessage]
- public class Karma : ModuleBase
+ public class Karma : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly DatabaseContext _database;
- private readonly ITranslationHandler _translation;
- public Karma(DatabaseContext database, IErrorHandler errorHandler, ITranslationHandler translation)
+ public Karma(DatabaseContext database, IErrorHandler errorHandler)
{
_database = database;
_errorHandler = errorHandler;
- _translation = translation;
}
[Command("good", RunMode = RunMode.Async)]
@@ -32,16 +30,15 @@ namespace Geekbot.net.Commands.User
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var actor = await GetUser(Context.User.Id);
if (user.Id == Context.User.Id)
{
- await ReplyAsync(transContext.GetString("CannotChangeOwn", Context.User.Username));
+ await ReplyAsync(Context.Translations.GetString("CannotChangeOwn", Context.User.Username));
}
else if (TimeoutFinished(actor.TimeOut))
{
- var formatedWaitTime = transContext.FormatDateTimeAsRemaining(actor.TimeOut.AddMinutes(3));
- await ReplyAsync(transContext.GetString("WaitUntill", Context.User.Username, formatedWaitTime));
+ var formatedWaitTime = Context.Translations.FormatDateTimeAsRemaining(actor.TimeOut.AddMinutes(3));
+ await ReplyAsync(Context.Translations.GetString("WaitUntill", Context.User.Username, formatedWaitTime));
}
else
{
@@ -60,10 +57,10 @@ namespace Geekbot.net.Commands.User
.WithName(user.Username));
eb.WithColor(new Color(138, 219, 146));
- eb.Title = transContext.GetString("Increased");
- eb.AddInlineField(transContext.GetString("By"), Context.User.Username);
- eb.AddInlineField(transContext.GetString("Amount"), "+1");
- eb.AddInlineField(transContext.GetString("Current"), target.Karma);
+ eb.Title = Context.Translations.GetString("Increased");
+ eb.AddInlineField(Context.Translations.GetString("By"), Context.User.Username);
+ eb.AddInlineField(Context.Translations.GetString("Amount"), "+1");
+ eb.AddInlineField(Context.Translations.GetString("Current"), target.Karma);
await ReplyAsync("", false, eb.Build());
}
}
@@ -79,16 +76,15 @@ namespace Geekbot.net.Commands.User
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var actor = await GetUser(Context.User.Id);
if (user.Id == Context.User.Id)
{
- await ReplyAsync(transContext.GetString("CannotChangeOwn", Context.User.Username));
+ await ReplyAsync(Context.Translations.GetString("CannotChangeOwn", Context.User.Username));
}
else if (TimeoutFinished(actor.TimeOut))
{
- var formatedWaitTime = transContext.FormatDateTimeAsRemaining(actor.TimeOut.AddMinutes(3));
- await ReplyAsync(transContext.GetString("WaitUntill", Context.User.Username, formatedWaitTime));
+ var formatedWaitTime = Context.Translations.FormatDateTimeAsRemaining(actor.TimeOut.AddMinutes(3));
+ await ReplyAsync(Context.Translations.GetString("WaitUntill", Context.User.Username, formatedWaitTime));
}
else
{
@@ -107,10 +103,10 @@ namespace Geekbot.net.Commands.User
.WithName(user.Username));
eb.WithColor(new Color(138, 219, 146));
- eb.Title = transContext.GetString("Decreased");
- eb.AddInlineField(transContext.GetString("By"), Context.User.Username);
- eb.AddInlineField(transContext.GetString("Amount"), "-1");
- eb.AddInlineField(transContext.GetString("Current"), target.Karma);
+ eb.Title = Context.Translations.GetString("Decreased");
+ eb.AddInlineField(Context.Translations.GetString("By"), Context.User.Username);
+ eb.AddInlineField(Context.Translations.GetString("Amount"), "-1");
+ eb.AddInlineField(Context.Translations.GetString("Current"), target.Karma);
await ReplyAsync("", false, eb.Build());
}
}
diff --git a/Geekbot.net/Commands/User/Ranking/Rank.cs b/Geekbot.net/Commands/User/Ranking/Rank.cs
index 0ad21d5..03d2e31 100644
--- a/Geekbot.net/Commands/User/Ranking/Rank.cs
+++ b/Geekbot.net/Commands/User/Ranking/Rank.cs
@@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
using Geekbot.net.Database;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.Converters;
using Geekbot.net.Lib.ErrorHandling;
@@ -15,24 +16,19 @@ using Geekbot.net.Lib.UserRepository;
namespace Geekbot.net.Commands.User.Ranking
{
- public class Rank : ModuleBase
+ public class Rank : GeekbotBase
{
private readonly IEmojiConverter _emojiConverter;
private readonly IHighscoreManager _highscoreManager;
- private readonly ITranslationHandler _translationHandler;
private readonly IErrorHandler _errorHandler;
private readonly DatabaseContext _database;
- private readonly IUserRepository _userRepository;
- public Rank(DatabaseContext database, IErrorHandler errorHandler, IUserRepository userRepository,
- IEmojiConverter emojiConverter, IHighscoreManager highscoreManager, ITranslationHandler translationHandler)
+ public Rank(DatabaseContext database, IErrorHandler errorHandler, IEmojiConverter emojiConverter, IHighscoreManager highscoreManager)
{
_database = database;
_errorHandler = errorHandler;
- _userRepository = userRepository;
_emojiConverter = emojiConverter;
_highscoreManager = highscoreManager;
- _translationHandler = translationHandler;
}
[Command("rank", RunMode = RunMode.Async)]
@@ -42,7 +38,6 @@ namespace Geekbot.net.Commands.User.Ranking
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
HighscoreTypes type;
try
{
@@ -51,14 +46,14 @@ namespace Geekbot.net.Commands.User.Ranking
}
catch
{
- await ReplyAsync(transContext.GetString("InvalidType"));
+ await ReplyAsync(Context.Translations.GetString("InvalidType"));
return;
}
var replyBuilder = new StringBuilder();
if (amount > 20)
{
- await ReplyAsync(transContext.GetString("LimitingTo20Warning"));
+ await ReplyAsync(Context.Translations.GetString("LimitingTo20Warning"));
amount = 20;
}
@@ -70,7 +65,7 @@ namespace Geekbot.net.Commands.User.Ranking
}
catch (HighscoreListEmptyException)
{
- await ReplyAsync(transContext.GetString("NoTypeFoundForServer", type));
+ await ReplyAsync(Context.Translations.GetString("NoTypeFoundForServer", type));
return;
}
@@ -85,8 +80,8 @@ namespace Geekbot.net.Commands.User.Ranking
var failedToRetrieveUser = highscoreUsers.Any(e => string.IsNullOrEmpty(e.Key.Username));
- if (failedToRetrieveUser) replyBuilder.AppendLine(transContext.GetString("FailedToResolveAllUsernames"));
- replyBuilder.AppendLine(transContext.GetString("HighscoresFor", type.ToString().CapitalizeFirst(), Context.Guild.Name));
+ if (failedToRetrieveUser) replyBuilder.AppendLine(Context.Translations.GetString("FailedToResolveAllUsernames"));
+ replyBuilder.AppendLine(Context.Translations.GetString("HighscoresFor", type.ToString().CapitalizeFirst(), Context.Guild.Name));
var highscorePlace = 1;
foreach (var user in highscoreUsers)
{
diff --git a/Geekbot.net/Commands/User/Stats.cs b/Geekbot.net/Commands/User/Stats.cs
index 6ddf7d4..1ee85bf 100644
--- a/Geekbot.net/Commands/User/Stats.cs
+++ b/Geekbot.net/Commands/User/Stats.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Geekbot.net.Database;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.AlmostRedis;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
@@ -12,7 +13,7 @@ using Geekbot.net.Lib.Levels;
namespace Geekbot.net.Commands.User
{
- public class Stats : ModuleBase
+ public class Stats : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly ILevelCalc _levelCalc;
diff --git a/Geekbot.net/Commands/Utils/AvatarGetter.cs b/Geekbot.net/Commands/Utils/AvatarGetter.cs
index 142b3e3..2077fa5 100644
--- a/Geekbot.net/Commands/Utils/AvatarGetter.cs
+++ b/Geekbot.net/Commands/Utils/AvatarGetter.cs
@@ -2,11 +2,12 @@
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
namespace Geekbot.net.Commands.Utils
{
- public class AvatarGetter : ModuleBase
+ public class AvatarGetter : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Utils/Changelog/Changelog.cs b/Geekbot.net/Commands/Utils/Changelog/Changelog.cs
index adcc9a3..e86851a 100644
--- a/Geekbot.net/Commands/Utils/Changelog/Changelog.cs
+++ b/Geekbot.net/Commands/Utils/Changelog/Changelog.cs
@@ -7,12 +7,13 @@ using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Newtonsoft.Json;
namespace Geekbot.net.Commands.Utils.Changelog
{
- public class Changelog : ModuleBase
+ public class Changelog : GeekbotBase
{
private readonly DiscordSocketClient _client;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Utils/Choose.cs b/Geekbot.net/Commands/Utils/Choose.cs
index 62069bd..84ba62a 100644
--- a/Geekbot.net/Commands/Utils/Choose.cs
+++ b/Geekbot.net/Commands/Utils/Choose.cs
@@ -1,20 +1,19 @@
using System;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Localization;
namespace Geekbot.net.Commands.Utils
{
- public class Choose : ModuleBase
+ public class Choose : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
- private readonly ITranslationHandler _translation;
- public Choose(IErrorHandler errorHandler, ITranslationHandler translation)
+ public Choose(IErrorHandler errorHandler)
{
_errorHandler = errorHandler;
- _translation = translation;
}
[Command("choose", RunMode = RunMode.Async)]
@@ -24,10 +23,9 @@ namespace Geekbot.net.Commands.Utils
{
try
{
- var transContext = await _translation.GetGuildContext(Context);
var choicesArray = choices.Split(';');
var choice = new Random().Next(choicesArray.Length);
- await ReplyAsync(transContext.GetString("Choice", choicesArray[choice].Trim()));
+ await ReplyAsync(Context.Translations.GetString("Choice", choicesArray[choice].Trim()));
}
catch (Exception e)
{
diff --git a/Geekbot.net/Commands/Utils/Dice/Dice.cs b/Geekbot.net/Commands/Utils/Dice/Dice.cs
index 6b95903..5cea32e 100644
--- a/Geekbot.net/Commands/Utils/Dice/Dice.cs
+++ b/Geekbot.net/Commands/Utils/Dice/Dice.cs
@@ -4,11 +4,12 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.RandomNumberGenerator;
namespace Geekbot.net.Commands.Utils.Dice
{
- public class Dice : ModuleBase
+ public class Dice : GeekbotBase
{
private readonly IRandomNumberGenerator _randomNumberGenerator;
diff --git a/Geekbot.net/Commands/Utils/Emojify.cs b/Geekbot.net/Commands/Utils/Emojify.cs
index 5355aff..ddf1762 100644
--- a/Geekbot.net/Commands/Utils/Emojify.cs
+++ b/Geekbot.net/Commands/Utils/Emojify.cs
@@ -1,12 +1,13 @@
using System;
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.Converters;
using Geekbot.net.Lib.ErrorHandling;
namespace Geekbot.net.Commands.Utils
{
- public class Emojify : ModuleBase
+ public class Emojify : GeekbotBase
{
private readonly IEmojiConverter _emojiConverter;
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Utils/Help.cs b/Geekbot.net/Commands/Utils/Help.cs
index a6f0084..73f1956 100644
--- a/Geekbot.net/Commands/Utils/Help.cs
+++ b/Geekbot.net/Commands/Utils/Help.cs
@@ -3,11 +3,12 @@ using System.Text;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
namespace Geekbot.net.Commands.Utils
{
- public class Help : ModuleBase
+ public class Help : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
diff --git a/Geekbot.net/Commands/Utils/Info.cs b/Geekbot.net/Commands/Utils/Info.cs
index b1d5403..2ca8d8b 100644
--- a/Geekbot.net/Commands/Utils/Info.cs
+++ b/Geekbot.net/Commands/Utils/Info.cs
@@ -11,7 +11,7 @@ using Geekbot.net.Lib.Extensions;
namespace Geekbot.net.Commands.Utils
{
- public class Info : ModuleBase
+ public class Info : GeekbotBase
{
private readonly DiscordSocketClient _client;
private readonly CommandService _commands;
diff --git a/Geekbot.net/Commands/Utils/Ping.cs b/Geekbot.net/Commands/Utils/Ping.cs
index 18cf9cb..a794b3a 100644
--- a/Geekbot.net/Commands/Utils/Ping.cs
+++ b/Geekbot.net/Commands/Utils/Ping.cs
@@ -1,9 +1,10 @@
using System.Threading.Tasks;
using Discord.Commands;
+using Geekbot.net.Lib;
namespace Geekbot.net.Commands.Utils
{
- public class Ping : ModuleBase
+ public class Ping : GeekbotBase
{
[Command("👀", RunMode = RunMode.Async)]
[Summary("Look at the bot.")]
diff --git a/Geekbot.net/Commands/Utils/Quote/Quote.cs b/Geekbot.net/Commands/Utils/Quote/Quote.cs
index f06c6ab..6cfd3f6 100644
--- a/Geekbot.net/Commands/Utils/Quote/Quote.cs
+++ b/Geekbot.net/Commands/Utils/Quote/Quote.cs
@@ -5,6 +5,7 @@ using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
+using Geekbot.net.Lib;
using Geekbot.net.Lib.CommandPreconditions;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Extensions;
@@ -16,19 +17,17 @@ namespace Geekbot.net.Commands.Utils.Quote
{
[Group("quote")]
[DisableInDirectMessage]
- public class Quote : ModuleBase
+ public class Quote : GeekbotBase
{
private readonly IErrorHandler _errorHandler;
private readonly DatabaseContext _database;
private readonly IRandomNumberGenerator _randomNumberGenerator;
- private readonly ITranslationHandler _translationHandler;
- public Quote(IErrorHandler errorHandler, DatabaseContext database, IRandomNumberGenerator randomNumberGenerator, ITranslationHandler translationHandler)
+ public Quote(IErrorHandler errorHandler, DatabaseContext database, IRandomNumberGenerator randomNumberGenerator)
{
_errorHandler = errorHandler;
_database = database;
_randomNumberGenerator = randomNumberGenerator;
- _translationHandler = translationHandler;
}
[Command]
@@ -41,8 +40,7 @@ namespace Geekbot.net.Commands.Utils.Quote
if (!s.Any())
{
- var transContext = await _translationHandler.GetGuildContext(Context);
- await ReplyAsync(transContext.GetString("NoQuotesFound"));
+ await ReplyAsync(Context.Translations.GetString("NoQuotesFound"));
return;
}
@@ -64,16 +62,15 @@ namespace Geekbot.net.Commands.Utils.Quote
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
if (user.Id == Context.Message.Author.Id)
{
- await ReplyAsync(transContext.GetString("CannotSaveOwnQuotes"));
+ await ReplyAsync(Context.Translations.GetString("CannotSaveOwnQuotes"));
return;
}
if (user.IsBot)
{
- await ReplyAsync(transContext.GetString("CannotQuoteBots"));
+ await ReplyAsync(Context.Translations.GetString("CannotQuoteBots"));
return;
}
@@ -85,7 +82,7 @@ namespace Geekbot.net.Commands.Utils.Quote
await _database.SaveChangesAsync();
var embed = QuoteBuilder(quote);
- await ReplyAsync(transContext.GetString("QuoteAdded"), false, embed.Build());
+ await ReplyAsync(Context.Translations.GetString("QuoteAdded"), false, embed.Build());
}
catch (Exception e)
{
@@ -100,17 +97,16 @@ namespace Geekbot.net.Commands.Utils.Quote
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
var message = await Context.Channel.GetMessageAsync(messageId);
if (message.Author.Id == Context.Message.Author.Id)
{
- await ReplyAsync(transContext.GetString("CannotSaveOwnQuotes"));
+ await ReplyAsync(Context.Translations.GetString("CannotSaveOwnQuotes"));
return;
}
if (message.Author.IsBot)
{
- await ReplyAsync(transContext.GetString("CannotQuoteBots"));
+ await ReplyAsync(Context.Translations.GetString("CannotQuoteBots"));
return;
}
@@ -119,7 +115,7 @@ namespace Geekbot.net.Commands.Utils.Quote
await _database.SaveChangesAsync();
var embed = QuoteBuilder(quote);
- await ReplyAsync(transContext.GetString("QuoteAdded"), false, embed.Build());
+ await ReplyAsync(Context.Translations.GetString("QuoteAdded"), false, embed.Build());
}
catch (Exception e)
{
@@ -174,18 +170,17 @@ namespace Geekbot.net.Commands.Utils.Quote
{
try
{
- var transContext = await _translationHandler.GetGuildContext(Context);
var quote = _database.Quotes.Where(e => e.GuildId == Context.Guild.Id.AsLong() && e.InternalId == id)?.FirstOrDefault();
if (quote != null)
{
_database.Quotes.Remove(quote);
await _database.SaveChangesAsync();
var embed = QuoteBuilder(quote);
- await ReplyAsync(transContext.GetString("Removed", id), false, embed.Build());
+ await ReplyAsync(Context.Translations.GetString("Removed", id), false, embed.Build());
}
else
{
- await ReplyAsync(transContext.GetString("NotFoundWithId"));
+ await ReplyAsync(Context.Translations.GetString("NotFoundWithId"));
}
}
catch (Exception e)
diff --git a/Geekbot.net/Handlers.cs b/Geekbot.net/Handlers.cs
index a254c14..79390cc 100644
--- a/Geekbot.net/Handlers.cs
+++ b/Geekbot.net/Handlers.cs
@@ -9,7 +9,9 @@ using Discord.WebSocket;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
using Geekbot.net.Lib.AlmostRedis;
+using Geekbot.net.Lib.Context;
using Geekbot.net.Lib.Extensions;
+using Geekbot.net.Lib.Localization;
using Geekbot.net.Lib.Logger;
using Geekbot.net.Lib.ReactionListener;
using Geekbot.net.Lib.UserRepository;
@@ -27,11 +29,12 @@ namespace Geekbot.net
private readonly CommandService _commands;
private readonly IUserRepository _userRepository;
private readonly IReactionListener _reactionListener;
+ private readonly ITranslationHandler _translationHandler;
private readonly DatabaseContext _messageCounterDatabaseContext;
public Handlers(DatabaseInitializer databaseInitializer, IDiscordClient client, IGeekbotLogger logger, IAlmostRedis redis,
IServiceProvider servicesProvider, CommandService commands, IUserRepository userRepository,
- IReactionListener reactionListener)
+ IReactionListener reactionListener, ITranslationHandler translationHandler)
{
_database = databaseInitializer.Initialize();
_messageCounterDatabaseContext = databaseInitializer.Initialize();
@@ -42,6 +45,7 @@ namespace Geekbot.net
_commands = commands;
_userRepository = userRepository;
_reactionListener = reactionListener;
+ _translationHandler = translationHandler;
}
//
@@ -79,7 +83,7 @@ namespace Geekbot.net
if (!(message.HasCharPrefix('!', ref argPos) ||
message.HasMentionPrefix(_client.CurrentUser, ref argPos))) return Task.CompletedTask;
- var context = new CommandContext(_client, message);
+ var context = new GeekbotContext(_client, message, _translationHandler);
var commandExec = _commands.ExecuteAsync(context, argPos, _servicesProvider);
_logger.Information(LogSource.Command,
context.Message.Content.Split(" ")[0].Replace("!", ""),
diff --git a/Geekbot.net/Lib/Context/GeekbotContext.cs b/Geekbot.net/Lib/Context/GeekbotContext.cs
new file mode 100644
index 0000000..dfc4281
--- /dev/null
+++ b/Geekbot.net/Lib/Context/GeekbotContext.cs
@@ -0,0 +1,56 @@
+using Discord;
+using Geekbot.net.Lib.Localization;
+
+namespace Geekbot.net.Lib.Context
+{
+ /// The context of a command which may contain the client, user, guild, channel, and message.
+ public class GeekbotContext : IGeekbotContext
+ {
+ ///
+ public IDiscordClient Client { get; }
+
+ ///
+ public IGuild Guild { get; }
+
+ ///
+ public IMessageChannel Channel { get; }
+
+ ///
+ public IUser User { get; }
+
+ ///
+ public IUserMessage Message { get; }
+
+ ///
+ public IGuildUser GuildUser { get; }
+
+ ///
+ public TranslationGuildContext Translations { get; }
+
+ /// Indicates whether the channel that the command is executed in is a private channel.
+ public bool IsPrivate
+ {
+ get
+ {
+ return this.Channel is IPrivateChannel;
+ }
+ }
+
+ ///
+ /// Initializes a new class with the provided client and message.
+ ///
+ /// The underlying client.
+ /// The underlying message.
+ /// the translation handler
+ public GeekbotContext(IDiscordClient client, IUserMessage msg, ITranslationHandler translationHandler)
+ {
+ this.Client = client;
+ this.Guild = (msg.Channel as IGuildChannel)?.Guild;
+ this.Channel = msg.Channel;
+ this.User = msg.Author;
+ this.GuildUser = msg.Author as IGuildUser;
+ this.Message = msg;
+ this.Translations = translationHandler.GetGuildContext(this.Guild, this.Message).Result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Geekbot.net/Lib/Context/IGeekbotContext.cs b/Geekbot.net/Lib/Context/IGeekbotContext.cs
new file mode 100644
index 0000000..61884e1
--- /dev/null
+++ b/Geekbot.net/Lib/Context/IGeekbotContext.cs
@@ -0,0 +1,19 @@
+using Discord;
+using Discord.Commands;
+using Geekbot.net.Lib.Localization;
+
+namespace Geekbot.net.Lib.Context
+{
+ public interface IGeekbotContext : ICommandContext
+ {
+ ///
+ /// Gets the who executed the command.
+ ///
+ IGuildUser GuildUser { get; }
+
+ ///
+ /// Gets the containing the necessary tools for command localization.
+ ///
+ TranslationGuildContext Translations { get; }
+ }
+}
\ No newline at end of file
diff --git a/Geekbot.net/Lib/GeekbotBase.cs b/Geekbot.net/Lib/GeekbotBase.cs
new file mode 100644
index 0000000..e92f212
--- /dev/null
+++ b/Geekbot.net/Lib/GeekbotBase.cs
@@ -0,0 +1,9 @@
+using Discord.Commands;
+using Geekbot.net.Lib.Context;
+
+namespace Geekbot.net.Lib
+{
+ public abstract class GeekbotBase : ModuleBase
+ {
+ }
+}
\ No newline at end of file
diff --git a/Geekbot.net/Lib/Localization/ITranslationHandler.cs b/Geekbot.net/Lib/Localization/ITranslationHandler.cs
index 9cd0680..3672c26 100644
--- a/Geekbot.net/Lib/Localization/ITranslationHandler.cs
+++ b/Geekbot.net/Lib/Localization/ITranslationHandler.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
+using Discord;
using Discord.Commands;
namespace Geekbot.net.Lib.Localization
@@ -10,6 +11,7 @@ namespace Geekbot.net.Lib.Localization
string GetString(string language, string command, string stringName);
Task> GetDict(ICommandContext context, string command);
Task GetGuildContext(ICommandContext context);
+ Task GetGuildContext(IGuild guild, IUserMessage message);
Task SetLanguage(ulong guildId, string language);
List SupportedLanguages { get; }
}
diff --git a/Geekbot.net/Lib/Localization/TranslationHandler.cs b/Geekbot.net/Lib/Localization/TranslationHandler.cs
index 3d1ee3a..f1a30e5 100644
--- a/Geekbot.net/Lib/Localization/TranslationHandler.cs
+++ b/Geekbot.net/Lib/Localization/TranslationHandler.cs
@@ -3,13 +3,12 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
+using Discord;
using Discord.Commands;
using Geekbot.net.Database;
using Geekbot.net.Database.Models;
using Geekbot.net.Lib.Extensions;
using Geekbot.net.Lib.Logger;
-using Utf8Json;
-using YamlDotNet.RepresentationModel;
using YamlDotNet.Serialization;
namespace Geekbot.net.Lib.Localization
@@ -137,12 +136,17 @@ namespace Geekbot.net.Lib.Localization
return translation;
}
- private async Task> GetDict(ICommandContext context)
+ private Task> GetDict(ICommandContext context)
+ {
+ return GetDict(context.Guild, context.Message);
+ }
+
+ private async Task> GetDict(IGuild guild, IUserMessage message)
{
try
{
- var command = context.Message.Content.Split(' ').First().TrimStart('!').ToLower();
- var serverLanguage = await GetServerLanguage(context.Guild?.Id ?? 0);
+ var command = message.Content.Split(' ').First().TrimStart('!').ToLower();
+ var serverLanguage = await GetServerLanguage(guild?.Id ?? 0);
return _translations[serverLanguage][command];
}
catch (Exception e)
@@ -159,6 +163,13 @@ namespace Geekbot.net.Lib.Localization
return new TranslationGuildContext(this, language, dict);
}
+ public async Task GetGuildContext(IGuild guild, IUserMessage message)
+ {
+ var dict = await GetDict(guild, message);
+ var language = await GetServerLanguage(guild?.Id ?? 0);
+ return new TranslationGuildContext(this, language, dict);
+ }
+
public async Task> GetDict(ICommandContext context, string command)
{
try
diff --git a/Geekbot.net/Program.cs b/Geekbot.net/Program.cs
index b7251a8..9833b3a 100755
--- a/Geekbot.net/Program.cs
+++ b/Geekbot.net/Program.cs
@@ -170,7 +170,7 @@ namespace Geekbot.net
_servicesProvider = _services.BuildServiceProvider();
await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _servicesProvider);
- var handlers = new Handlers(_databaseInitializer, _client, _logger, _redis, _servicesProvider, _commands, _userRepository, reactionListener);
+ var handlers = new Handlers(_databaseInitializer, _client, _logger, _redis, _servicesProvider, _commands, _userRepository, reactionListener, translationHandler);
_client.MessageReceived += handlers.RunCommand;
_client.MessageDeleted += handlers.MessageDeleted;