mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 00:56:09 +03:00
Award command improvement
This commit is contained in:
parent
f0a55f305e
commit
6ef9b602e5
@ -23,18 +23,53 @@ namespace JetKarmaBot.Commands
|
|||||||
using (var db = Db.GetContext())
|
using (var db = Db.GetContext())
|
||||||
{
|
{
|
||||||
var currentLocale = Locale[(await db.Chats.FindAsync(args.Message.Chat.Id)).Locale];
|
var currentLocale = Locale[(await db.Chats.FindAsync(args.Message.Chat.Id)).Locale];
|
||||||
if (args.Message.ReplyToMessage == null)
|
|
||||||
|
string awardTypeText = null;
|
||||||
|
int recipientId = default(int);
|
||||||
|
foreach (string arg in cmd.Parameters)
|
||||||
|
{
|
||||||
|
if (arg.StartsWith('@'))
|
||||||
|
{
|
||||||
|
if (recipientId != default(int))
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(args.Message.Chat.Id, currentLocale["jetkarmabot.award.errdup"]);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
recipientId = await db.Users.Where(x => x.Username == arg).Select(x => x.UserId).FirstOrDefaultAsync();
|
||||||
|
if (recipientId == default(int))
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(args.Message.Chat.Id, currentLocale["jetkarmabot.award.errbadusername"]);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (awardTypeText == null)
|
||||||
|
awardTypeText = arg;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await Client.SendTextMessageAsync(args.Message.Chat.Id, currentLocale["jetkarmabot.award.errdup"]);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.Message.ReplyToMessage != null && recipientId == default(int))
|
||||||
|
{
|
||||||
|
recipientId = args.Message.ReplyToMessage.From.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (recipientId == default(int))
|
||||||
{
|
{
|
||||||
await Client.SendTextMessageAsync(args.Message.Chat.Id, currentLocale["jetkarmabot.award.errawardnoreply"]);
|
await Client.SendTextMessageAsync(args.Message.Chat.Id, currentLocale["jetkarmabot.award.errawardnoreply"]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var awarder = args.Message.From;
|
var awarder = args.Message.From;
|
||||||
var recipient = args.Message.ReplyToMessage.From;
|
|
||||||
|
|
||||||
bool awarding = cmd.Command == "award";
|
bool awarding = cmd.Command == "award";
|
||||||
|
|
||||||
if (awarder.Id == recipient.Id)
|
if (awarder.Id == recipientId)
|
||||||
{
|
{
|
||||||
await Client.SendTextMessageAsync(
|
await Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
@ -43,7 +78,7 @@ namespace JetKarmaBot.Commands
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CommandRouter.Me.Id == recipient.Id)
|
if (CommandRouter.Me.Id == recipientId)
|
||||||
{
|
{
|
||||||
await Client.SendTextMessageAsync(
|
await Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
@ -55,7 +90,6 @@ namespace JetKarmaBot.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
var text = args.Message.Text;
|
var text = args.Message.Text;
|
||||||
var awardTypeText = cmd.Parameters.FirstOrDefault();
|
|
||||||
global::JetKarmaBot.Models.AwardType awardType = awardTypeText != null
|
global::JetKarmaBot.Models.AwardType awardType = awardTypeText != null
|
||||||
? await db.AwardTypes.FirstAsync(at => at.CommandName == awardTypeText)
|
? await db.AwardTypes.FirstAsync(at => at.CommandName == awardTypeText)
|
||||||
: await db.AwardTypes.FindAsync((sbyte)1);
|
: await db.AwardTypes.FindAsync((sbyte)1);
|
||||||
@ -73,20 +107,21 @@ namespace JetKarmaBot.Commands
|
|||||||
AwardTypeId = awardType.AwardTypeId,
|
AwardTypeId = awardType.AwardTypeId,
|
||||||
Amount = (sbyte)(awarding ? 1 : -1),
|
Amount = (sbyte)(awarding ? 1 : -1),
|
||||||
FromId = awarder.Id,
|
FromId = awarder.Id,
|
||||||
ToId = recipient.Id,
|
ToId = recipientId,
|
||||||
ChatId = args.Message.Chat.Id
|
ChatId = args.Message.Chat.Id
|
||||||
});
|
});
|
||||||
log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recipient.Username}");
|
|
||||||
await db.SaveChangesAsync();
|
await db.SaveChangesAsync();
|
||||||
|
|
||||||
var recUserName = (await db.Users.FindAsync(recipient.Id)).Username;
|
var recUserName = (await db.Users.FindAsync(recipientId)).Username;
|
||||||
|
|
||||||
|
log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recUserName}");
|
||||||
|
|
||||||
string message = awarding
|
string message = awarding
|
||||||
? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), recUserName)
|
? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), recUserName)
|
||||||
: string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), recUserName);
|
: string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), recUserName);
|
||||||
|
|
||||||
var currentCount = await db.Awards
|
var currentCount = await db.Awards
|
||||||
.Where(aw => aw.ToId == recipient.Id && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id)
|
.Where(aw => aw.ToId == recipientId && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id)
|
||||||
.SumAsync(aw => aw.Amount);
|
.SumAsync(aw => aw.Amount);
|
||||||
|
|
||||||
var response = message + "\n" + String.Format(currentLocale["jetkarmabot.award.statustext"], recUserName, currentCount, awardType.Symbol);
|
var response = message + "\n" + String.Format(currentLocale["jetkarmabot.award.statustext"], recUserName, currentCount, awardType.Symbol);
|
||||||
@ -126,6 +161,13 @@ namespace JetKarmaBot.Commands
|
|||||||
Type=ChatCommandArgumentType.String,
|
Type=ChatCommandArgumentType.String,
|
||||||
Description="The award to grant to/strip of the specified user",
|
Description="The award to grant to/strip of the specified user",
|
||||||
DescriptionID="jetkarmabot.award.awardtypehelp"
|
DescriptionID="jetkarmabot.award.awardtypehelp"
|
||||||
|
},
|
||||||
|
new ChatCommandArgument() {
|
||||||
|
Name="to",
|
||||||
|
Required=false,
|
||||||
|
Type=ChatCommandArgumentType.String,
|
||||||
|
Description="The user to award it to (if not present, uses author of message replied to)",
|
||||||
|
DescriptionID="jetkarmabot.award.tohelp"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,9 @@
|
|||||||
],
|
],
|
||||||
"note": "This is a joke. And made with google translate.",
|
"note": "This is a joke. And made with google translate.",
|
||||||
"strings": {
|
"strings": {
|
||||||
"jetkarmabot.award.errawardnoreply": "Калі ласка выкарыстоўвайце гэтую каманду ў адказе іншаму карыстальніку.",
|
"jetkarmabot.award.errawardnoreply": "Пра каго ты кажаш?",
|
||||||
|
"jetkarmabot.award.errbadusername": "Хто гэта?",
|
||||||
|
"jetkarmabot.award.errdup": "Калі ласка, спыніце батчіць ўзнагароды.",
|
||||||
"jetkarmabot.award.errawardself": "Хопіць з сабой гуляцца.",
|
"jetkarmabot.award.errawardself": "Хопіць з сабой гуляцца.",
|
||||||
"jetkarmabot.award.errawardbot": "Я бот, і мяне вашы нікчэмныя пузамеркі не вабяць.",
|
"jetkarmabot.award.errawardbot": "Я бот, і мяне вашы нікчэмныя пузамеркі не вабяць.",
|
||||||
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
"англійская"
|
"англійская"
|
||||||
],
|
],
|
||||||
"strings": {
|
"strings": {
|
||||||
"jetkarmabot.award.errawardnoreply": "Please use this command in reply to another user.",
|
"jetkarmabot.award.errawardnoreply": "Who are you talking about?",
|
||||||
|
"jetkarmabot.award.errbadusername": "I don't know who that is.",
|
||||||
|
"jetkarmabot.award.errdup": "Please stop batching awards.",
|
||||||
"jetkarmabot.award.errawardself": "Please stop playing with yourself.",
|
"jetkarmabot.award.errawardself": "Please stop playing with yourself.",
|
||||||
"jetkarmabot.award.errawardbot": "I am a bot, and have no use for your foolish fake internet points.",
|
"jetkarmabot.award.errawardbot": "I am a bot, and have no use for your foolish fake internet points.",
|
||||||
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
"руская"
|
"руская"
|
||||||
],
|
],
|
||||||
"strings": {
|
"strings": {
|
||||||
"jetkarmabot.award.errawardnoreply": "Пожалуйста используйте эту команду в ответе другому пользователю.",
|
"jetkarmabot.award.errawardnoreply": "О ком ты говоришь?",
|
||||||
|
"jetkarmabot.award.errbadusername": "Кто это?",
|
||||||
|
"jetkarmabot.award.errdup": "Пожалуйста, не батчайте награды.",
|
||||||
"jetkarmabot.award.errawardself": "Хватит с собой играться.",
|
"jetkarmabot.award.errawardself": "Хватит с собой играться.",
|
||||||
"jetkarmabot.award.errawardbot": "Я бот, и меня ваши жалкие пузомерки не интересуют.",
|
"jetkarmabot.award.errawardbot": "Я бот, и меня ваши жалкие пузомерки не интересуют.",
|
||||||
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user