Stats Recorder, Redis, welcome on join

This commit is contained in:
dboerlage 2017-04-14 21:36:01 +02:00
parent 3ce207749f
commit 1fdbcaa471
No known key found for this signature in database
GPG key ID: BDA07B7D3FCF147F
4 changed files with 53 additions and 28 deletions

View file

@ -3,28 +3,24 @@ using StackExchange.Redis;
namespace Geekbot.net.Lib
{
public sealed class RedisSingleton
public interface IRedisClient
{
private RedisSingleton()
IDatabase Client { get; set; }
}
public sealed class RedisClient : IRedisClient
{
public RedisClient()
{
var redis = ConnectionMultiplexer.Connect("localhost:6379");
if (redis.IsConnected)
var redis = ConnectionMultiplexer.Connect("127.0.0.1:6379");
if (!redis.IsConnected)
{
Console.WriteLine("Connection to Redis Enstablished");
}
else
{
Console.WriteLine("Connection to Redis Failed");
}
}
private static readonly Lazy<RedisSingleton> lazy = new Lazy<RedisSingleton>(() => new RedisSingleton());
public static RedisSingleton Instance
{
get
{
return lazy.Value;
Console.WriteLine("Could not Connect to the Server...");
}
Client = redis.GetDatabase();
}
public IDatabase Client { get; set; }
}
}

View file

@ -1,31 +1,37 @@
using System;
using System.Threading.Tasks;
using Discord.WebSocket;
using Geekbot.net.Lib;
using StackExchange.Redis;
namespace Geekbot.net.Lib
{
public class StatsRecorder
{
private SocketMessage message;
private readonly SocketMessage message;
private readonly IDatabase redis;
public StatsRecorder(SocketMessage message)
{
this.message = message;
var db = new RedisSingleton();
redis = new RedisClient().Client;
}
public async Task UpdateUserRecordAsync()
{
// Console.WriteLine(message.Author.Username + " earned a point");
var guildId = ((SocketGuildChannel) message.Channel).Guild.Id;
var key = guildId + "-" + message.Author.Id + "-messages";
var messages = (int)redis.StringGet(key);
redis.StringSet(key, (messages + 1).ToString());
await Task.FromResult(true);
}
public async Task UpdateGuildRecordAsync()
{
var channel = (SocketGuildChannel) message.Channel;
// Console.WriteLine(channel.Guild.Name + " earned a point");
var guildId = ((SocketGuildChannel) message.Channel).Guild.Id;
var key = guildId + "-messages";
var messages = (int)redis.StringGet(key);
redis.StringSet(key, (messages + 1).ToString());
await Task.FromResult(true);
}
}