76 lines
No EOL
2.5 KiB
C#
76 lines
No EOL
2.5 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using Discord;
|
|
using Discord.Commands;
|
|
using Geekbot.Commands.Karma;
|
|
using Geekbot.Core;
|
|
using Geekbot.Core.CommandPreconditions;
|
|
using Geekbot.Core.Database;
|
|
using Geekbot.Core.ErrorHandling;
|
|
using Geekbot.Core.Extensions;
|
|
using Geekbot.Core.GuildSettingsManager;
|
|
|
|
namespace Geekbot.Bot.Commands.User
|
|
{
|
|
[DisableInDirectMessage]
|
|
public class Karma : GeekbotCommandBase
|
|
{
|
|
private readonly DatabaseContext _database;
|
|
|
|
public Karma(DatabaseContext database, IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager) : base(errorHandler, guildSettingsManager)
|
|
{
|
|
_database = database;
|
|
}
|
|
|
|
[Command("good", RunMode = RunMode.Async)]
|
|
[Summary("Increase Someones Karma")]
|
|
public async Task Good([Summary("@someone")] IUser user)
|
|
{
|
|
await ChangeKarma(user, KarmaChange.Up);
|
|
}
|
|
|
|
[Command("bad", RunMode = RunMode.Async)]
|
|
[Summary("Decrease Someones Karma")]
|
|
public async Task Bad([Summary("@someone")] IUser user)
|
|
{
|
|
await ChangeKarma(user, KarmaChange.Down);
|
|
}
|
|
|
|
[Command("neutral", RunMode = RunMode.Async)]
|
|
[Summary("Do nothing to someones Karma")]
|
|
public async Task Neutral([Summary("@someone")] IUser user)
|
|
{
|
|
await ChangeKarma(user, KarmaChange.Same);
|
|
}
|
|
|
|
private async Task ChangeKarma(IUser user, KarmaChange change)
|
|
{
|
|
try
|
|
{
|
|
var author = new Core.Interactions.Resolved.User()
|
|
{
|
|
Id = Context.User.Id.ToString(),
|
|
Username = Context.User.Username,
|
|
Discriminator = Context.User.Discriminator,
|
|
Avatar = Context.User.AvatarId,
|
|
};
|
|
var targetUser = new Core.Interactions.Resolved.User()
|
|
{
|
|
Id = user.Id.ToString(),
|
|
Username = user.Username,
|
|
Discriminator = user.Discriminator,
|
|
Avatar = user.AvatarId,
|
|
};
|
|
|
|
var karma = new Geekbot.Commands.Karma.Karma(_database, Context.Guild.Id.AsLong());
|
|
var res = await karma.ChangeKarma(author, targetUser, change);
|
|
|
|
await ReplyAsync(string.Empty, false, res.ToDiscordNetEmbed().Build());
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
await ErrorHandler.HandleCommandException(e, Context);
|
|
}
|
|
}
|
|
}
|
|
} |