Fixing the redis bug, almost ready for prod
This commit is contained in:
parent
735a4a81d4
commit
5f437d74ea
6 changed files with 44 additions and 59 deletions
|
@ -3,42 +3,6 @@ using StackExchange.Redis;
|
||||||
|
|
||||||
namespace Geekbot.net.Lib
|
namespace Geekbot.net.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
// public class RedisClient
|
|
||||||
// {
|
|
||||||
// private static readonly Lazy<RedisClient> _instance
|
|
||||||
// = new Lazy<RedisClient>(() => new RedisClient());
|
|
||||||
// private static readonly object ThreadLock = new object();
|
|
||||||
// public static IDatabase Client;
|
|
||||||
//
|
|
||||||
// private RedisClient()
|
|
||||||
// { }
|
|
||||||
//
|
|
||||||
// public static RedisClient Instance
|
|
||||||
// {
|
|
||||||
// get
|
|
||||||
// {
|
|
||||||
// lock (ThreadLock)
|
|
||||||
// {
|
|
||||||
// if (Client == null)
|
|
||||||
// {
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// var redis = ConnectionMultiplexer.Connect("127.0.0.1:6379");
|
|
||||||
// Client = redis.GetDatabase();
|
|
||||||
// }
|
|
||||||
// catch (Exception)
|
|
||||||
// {
|
|
||||||
// Console.WriteLine("Start Reids already you fucking faggot!");
|
|
||||||
// Environment.Exit(69);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return _instance.Value;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
public interface IRedisClient
|
public interface IRedisClient
|
||||||
{
|
{
|
||||||
IDatabase Client { get; set; }
|
IDatabase Client { get; set; }
|
||||||
|
@ -55,8 +19,8 @@ namespace Geekbot.net.Lib
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Start Redis already you fucking faggot!");
|
Console.WriteLine("Start Redis pls...");
|
||||||
Environment.Exit(69);
|
Environment.Exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,10 +11,10 @@ namespace Geekbot.net.Lib
|
||||||
private readonly SocketMessage message;
|
private readonly SocketMessage message;
|
||||||
private readonly IDatabase redis;
|
private readonly IDatabase redis;
|
||||||
|
|
||||||
public StatsRecorder(SocketMessage message)
|
public StatsRecorder(SocketMessage message, IRedisClient redisClient)
|
||||||
{
|
{
|
||||||
this.message = message;
|
this.message = message;
|
||||||
redis = new RedisClient().Client;
|
redis = redisClient.Client;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateUserRecordAsync()
|
public async Task UpdateUserRecordAsync()
|
||||||
|
|
|
@ -7,13 +7,18 @@ namespace Geekbot.net.Modules
|
||||||
[Group("admin")]
|
[Group("admin")]
|
||||||
public class AdminCmd : ModuleBase
|
public class AdminCmd : ModuleBase
|
||||||
{
|
{
|
||||||
|
private readonly IRedisClient redis;
|
||||||
|
public AdminCmd(IRedisClient redisClient)
|
||||||
|
{
|
||||||
|
redis = redisClient;
|
||||||
|
}
|
||||||
|
|
||||||
[RequireUserPermission(Discord.GuildPermission.Administrator)]
|
[RequireUserPermission(Discord.GuildPermission.Administrator)]
|
||||||
[Command("welcome"), Summary("Set a Welcome Message (use '$user' to mention the new joined user).")]
|
[Command("welcome"), Summary("Set a Welcome Message (use '$user' to mention the new joined user).")]
|
||||||
public async Task SetWelcomeMessage([Remainder, Summary("The message")] string welcomeMessage)
|
public async Task SetWelcomeMessage([Remainder, Summary("The message")] string welcomeMessage)
|
||||||
{
|
{
|
||||||
var redis = new RedisClient().Client;
|
|
||||||
var key = Context.Guild.Id + "-welcomeMsg";
|
var key = Context.Guild.Id + "-welcomeMsg";
|
||||||
redis.StringSet(key, welcomeMessage);
|
redis.Client.StringSet(key, welcomeMessage);
|
||||||
var formatedMessage = welcomeMessage.Replace("$user", Context.User.Mention);
|
var formatedMessage = welcomeMessage.Replace("$user", Context.User.Mention);
|
||||||
await ReplyAsync("Welcome message has been changed\r\nHere is an example of how it would look:\r\n" +
|
await ReplyAsync("Welcome message has been changed\r\nHere is an example of how it would look:\r\n" +
|
||||||
formatedMessage);
|
formatedMessage);
|
||||||
|
|
|
@ -8,6 +8,12 @@ namespace Geekbot.net.Modules
|
||||||
{
|
{
|
||||||
public class Counters : ModuleBase
|
public class Counters : ModuleBase
|
||||||
{
|
{
|
||||||
|
private readonly IRedisClient redis;
|
||||||
|
public Counters(IRedisClient redisClient)
|
||||||
|
{
|
||||||
|
redis = redisClient;
|
||||||
|
}
|
||||||
|
|
||||||
[Command("good"), Summary("Increase Someones Karma")]
|
[Command("good"), Summary("Increase Someones Karma")]
|
||||||
public async Task Good([Summary("The someone")] IUser user)
|
public async Task Good([Summary("The someone")] IUser user)
|
||||||
{
|
{
|
||||||
|
@ -17,10 +23,9 @@ namespace Geekbot.net.Modules
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var redis = new RedisClient().Client;
|
|
||||||
var key = Context.Guild.Id + "-" + user.Id + "-karma";
|
var key = Context.Guild.Id + "-" + user.Id + "-karma";
|
||||||
var badJokes = (int)redis.StringGet(key);
|
var badJokes = (int)redis.Client.StringGet(key);
|
||||||
redis.StringSet(key, (badJokes + 1).ToString());
|
redis.Client.StringSet(key, (badJokes + 1).ToString());
|
||||||
await ReplyAsync($"{Context.User.Username} gave {user.Mention} karma");
|
await ReplyAsync($"{Context.User.Username} gave {user.Mention} karma");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,10 +39,9 @@ namespace Geekbot.net.Modules
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var redis = new RedisClient().Client;
|
|
||||||
var key = Context.Guild.Id + "-" + user.Id + "-karma";
|
var key = Context.Guild.Id + "-" + user.Id + "-karma";
|
||||||
var badJokes = (int)redis.StringGet(key);
|
var badJokes = (int)redis.Client.StringGet(key);
|
||||||
redis.StringSet(key, (badJokes - 1).ToString());
|
redis.Client.StringSet(key, (badJokes - 1).ToString());
|
||||||
await ReplyAsync($"{Context.User.Username} lowered {user.Mention}'s karma");
|
await ReplyAsync($"{Context.User.Username} lowered {user.Mention}'s karma");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,12 @@ namespace Geekbot.net.Modules
|
||||||
{
|
{
|
||||||
public class UserInfo : ModuleBase
|
public class UserInfo : ModuleBase
|
||||||
{
|
{
|
||||||
|
private readonly IRedisClient redis;
|
||||||
|
public UserInfo(IRedisClient redisClient)
|
||||||
|
{
|
||||||
|
redis = redisClient;
|
||||||
|
}
|
||||||
|
|
||||||
[Alias("stats")]
|
[Alias("stats")]
|
||||||
[Command("user"), Summary("Get information about this user")]
|
[Command("user"), Summary("Get information about this user")]
|
||||||
public async Task User([Summary("The (optional) user to get info for")] IUser user = null)
|
public async Task User([Summary("The (optional) user to get info for")] IUser user = null)
|
||||||
|
@ -16,9 +22,8 @@ namespace Geekbot.net.Modules
|
||||||
|
|
||||||
var age = Math.Floor((DateTime.Now - userInfo.CreatedAt).TotalDays);
|
var age = Math.Floor((DateTime.Now - userInfo.CreatedAt).TotalDays);
|
||||||
|
|
||||||
var redis = new RedisClient().Client;
|
|
||||||
var key = Context.Guild.Id + "-" + userInfo.Id;
|
var key = Context.Guild.Id + "-" + userInfo.Id;
|
||||||
var messages = (int)redis.StringGet(key + "-messages");
|
var messages = (int)redis.Client.StringGet(key + "-messages");
|
||||||
var level = GetLevelAtExperience(messages);
|
var level = GetLevelAtExperience(messages);
|
||||||
|
|
||||||
var eb = new EmbedBuilder();
|
var eb = new EmbedBuilder();
|
||||||
|
@ -30,7 +35,7 @@ namespace Geekbot.net.Modules
|
||||||
eb.AddField("Level", level);
|
eb.AddField("Level", level);
|
||||||
eb.AddField("Messages Sent", messages);
|
eb.AddField("Messages Sent", messages);
|
||||||
|
|
||||||
var karma = redis.StringGet(key + "-karma");
|
var karma = redis.Client.StringGet(key + "-karma");
|
||||||
if (!karma.IsNullOrEmpty)
|
if (!karma.IsNullOrEmpty)
|
||||||
{
|
{
|
||||||
eb.AddField("Karma", karma);
|
eb.AddField("Karma", karma);
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Discord;
|
using Discord;
|
||||||
|
@ -15,7 +17,7 @@ namespace Geekbot.net
|
||||||
private CommandService commands;
|
private CommandService commands;
|
||||||
private DiscordSocketClient client;
|
private DiscordSocketClient client;
|
||||||
private DependencyMap map;
|
private DependencyMap map;
|
||||||
private IDatabase redis;
|
private IRedisClient redis;
|
||||||
|
|
||||||
private static void Main(string[] args)
|
private static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
@ -35,29 +37,29 @@ namespace Geekbot.net
|
||||||
{
|
{
|
||||||
client = new DiscordSocketClient();
|
client = new DiscordSocketClient();
|
||||||
commands = new CommandService();
|
commands = new CommandService();
|
||||||
redis = new RedisClient().Client;
|
redis = new RedisClient();
|
||||||
|
|
||||||
var token = redis.StringGet("discordToken");
|
var token = redis.Client.StringGet("discordToken");
|
||||||
if (token.IsNullOrEmpty)
|
if (token.IsNullOrEmpty)
|
||||||
{
|
{
|
||||||
Console.Write("Your bot Token: ");
|
Console.Write("Your bot Token: ");
|
||||||
var newToken = Console.ReadLine();
|
var newToken = Console.ReadLine();
|
||||||
redis.StringSet("discordToken", newToken);
|
redis.Client.StringSet("discordToken", newToken);
|
||||||
token = newToken;
|
token = newToken;
|
||||||
|
|
||||||
Console.Write("Bot Owner User ID: ");
|
Console.Write("Bot Owner User ID: ");
|
||||||
var ownerId = Console.ReadLine();
|
var ownerId = Console.ReadLine();
|
||||||
redis.StringSet("botOwner", ownerId);
|
redis.Client.StringSet("botOwner", ownerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
map = new DependencyMap();
|
map = new DependencyMap();
|
||||||
map.Add<ICatClient>(new CatClient());
|
map.Add<ICatClient>(new CatClient());
|
||||||
|
map.Add<IRedisClient>(redis);
|
||||||
|
|
||||||
await InstallCommands();
|
await InstallCommands();
|
||||||
Console.WriteLine("Connecting to Discord...");
|
Console.WriteLine("Connecting to Discord...");
|
||||||
await client.LoginAsync(TokenType.Bot, token);
|
await client.LoginAsync(TokenType.Bot, token);
|
||||||
await client.StartAsync();
|
await client.StartAsync();
|
||||||
redis = new RedisClient().Client;
|
|
||||||
Console.WriteLine("Done and ready for use...\n");
|
Console.WriteLine("Done and ready for use...\n");
|
||||||
|
|
||||||
await Task.Delay(-1);
|
await Task.Delay(-1);
|
||||||
|
@ -107,16 +109,21 @@ namespace Geekbot.net
|
||||||
|
|
||||||
Console.WriteLine(channel.Guild.Name + " - " + message.Channel + " - " + message.Author.Username + " - " + message.Content);
|
Console.WriteLine(channel.Guild.Name + " - " + message.Channel + " - " + message.Author.Username + " - " + message.Content);
|
||||||
|
|
||||||
var statsRecorder = new StatsRecorder(message);
|
var statsRecorder = new StatsRecorder(message, redis);
|
||||||
await statsRecorder.UpdateUserRecordAsync();
|
await statsRecorder.UpdateUserRecordAsync();
|
||||||
await statsRecorder.UpdateGuildRecordAsync();
|
await statsRecorder.UpdateGuildRecordAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task HandleUserJoined(SocketGuildUser user)
|
public async Task HandleUserJoined(SocketGuildUser user)
|
||||||
{
|
{
|
||||||
|
// var list = Directory.EnumerateFiles("", "", SearchOption.AllDirectories).ToList();
|
||||||
|
// foreach (var file in list)
|
||||||
|
// {
|
||||||
|
//
|
||||||
|
// }
|
||||||
if (!user.IsBot)
|
if (!user.IsBot)
|
||||||
{
|
{
|
||||||
var message = redis.StringGet(user.Guild.Id + "-welcomeMsg");
|
var message = redis.Client.StringGet(user.Guild.Id + "-welcomeMsg");
|
||||||
if (!message.IsNullOrEmpty)
|
if (!message.IsNullOrEmpty)
|
||||||
{
|
{
|
||||||
message = message.ToString().Replace("$user", user.Mention);
|
message = message.ToString().Replace("$user", user.Mention);
|
||||||
|
|
Loading…
Reference in a new issue