geekbot/Geekbot.net/Commands/Games/Roll.cs

63 lines
2.4 KiB
C#
Raw Normal View History

using System;
using System.Threading.Tasks;
2017-04-12 22:43:52 +02:00
using Discord.Commands;
2017-10-12 16:34:10 +02:00
using Geekbot.net.Lib;
using Geekbot.net.Lib.ErrorHandling;
using Geekbot.net.Lib.Localization;
using StackExchange.Redis;
2017-04-12 22:43:52 +02:00
namespace Geekbot.net.Commands.Games
2017-04-12 22:43:52 +02:00
{
public class Roll : ModuleBase
{
2017-12-29 01:53:50 +01:00
private readonly IErrorHandler _errorHandler;
private readonly IDatabase _redis;
private readonly ITranslationHandler _translation;
2017-09-15 22:56:03 +02:00
public Roll(IDatabase redis, IErrorHandler errorHandler, ITranslationHandler translation)
{
_redis = redis;
_translation = translation;
_errorHandler = errorHandler;
}
2017-09-15 22:56:03 +02:00
[Command("roll", RunMode = RunMode.Async)]
2017-10-12 16:34:10 +02:00
[Summary("Guess which number the bot will roll (1-100")]
public async Task RollCommand([Remainder] [Summary("guess")] string stuff = "noGuess")
2017-04-12 22:43:52 +02:00
{
try
{
var number = new Random().Next(1, 100);
var guess = 1000;
int.TryParse(stuff, out guess);
var transDict = _translation.GetDict(Context);
if (guess <= 100 && guess > 0)
{
var prevRoll = _redis.HashGet($"{Context.Guild.Id}:RollsPrevious", Context.Message.Author.Id);
if (!prevRoll.IsNullOrEmpty && prevRoll.ToString() == guess.ToString())
{
await ReplyAsync(string.Format(transDict["NoPrevGuess"], Context.Message.Author.Mention));
return;
}
2017-12-29 01:53:50 +01:00
_redis.HashSet($"{Context.Guild.Id}:RollsPrevious",
new[] {new HashEntry(Context.Message.Author.Id, guess)});
await ReplyAsync(string.Format(transDict["Rolled"], Context.Message.Author.Mention, number, guess));
if (guess == number)
{
await ReplyAsync(string.Format(transDict["Gratz"], Context.Message.Author));
_redis.HashIncrement($"{Context.Guild.Id}:Rolls", Context.User.Id.ToString());
}
}
else
{
await ReplyAsync(string.Format(transDict["RolledNoGuess"], Context.Message.Author.Mention, number));
}
}
catch (Exception e)
{
_errorHandler.HandleCommandException(e, Context);
}
2017-04-12 22:43:52 +02:00
}
}
}