mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 00:56:09 +03:00
Changes in commands
This commit is contained in:
parent
afc6306c9b
commit
2d0083fdb3
@ -90,9 +90,22 @@ namespace JetKarmaBot.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
var text = args.Message.Text;
|
var text = args.Message.Text;
|
||||||
global::JetKarmaBot.Models.AwardType awardType = awardTypeText != null
|
string awardTypeAcc, awardTypeSym;
|
||||||
? await db.AwardTypes.FirstAsync(at => at.CommandName == awardTypeText)
|
sbyte awardTypeId = 0;
|
||||||
: await db.AwardTypes.FindAsync((sbyte)1);
|
if (awardTypeText == null || awardTypeText == "star")
|
||||||
|
{
|
||||||
|
awardTypeAcc = currentLocale["jetkarmabot.star.accusative"];
|
||||||
|
awardTypeSym = "★";
|
||||||
|
awardTypeId = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var awardType = await db.AwardTypes.FirstAsync(at => at.CommandName == awardTypeText && at.ChatId == args.Message.Chat.Id);
|
||||||
|
awardTypeAcc = awardType.AccusativeName;
|
||||||
|
awardTypeSym = awardType.Symbol;
|
||||||
|
awardTypeId = awardType.AwardTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
DateTime cutoff = DateTime.Now - TimeSpan.FromMinutes(5);
|
DateTime cutoff = DateTime.Now - TimeSpan.FromMinutes(5);
|
||||||
if (await db.Awards.Where(x => x.Date > cutoff && x.FromId == awarder.Id).CountAsync() >= 10)
|
if (await db.Awards.Where(x => x.Date > cutoff && x.FromId == awarder.Id).CountAsync() >= 10)
|
||||||
{
|
{
|
||||||
@ -104,7 +117,7 @@ namespace JetKarmaBot.Commands
|
|||||||
}
|
}
|
||||||
await db.Awards.AddAsync(new Models.Award()
|
await db.Awards.AddAsync(new Models.Award()
|
||||||
{
|
{
|
||||||
AwardTypeId = awardType.AwardTypeId,
|
AwardTypeId = awardTypeId,
|
||||||
Amount = (sbyte)(awarding ? 1 : -1),
|
Amount = (sbyte)(awarding ? 1 : -1),
|
||||||
FromId = awarder.Id,
|
FromId = awarder.Id,
|
||||||
ToId = recipientId,
|
ToId = recipientId,
|
||||||
@ -114,17 +127,16 @@ namespace JetKarmaBot.Commands
|
|||||||
|
|
||||||
var recUserName = (await db.Users.FindAsync(recipientId)).Username;
|
var recUserName = (await db.Users.FindAsync(recipientId)).Username;
|
||||||
|
|
||||||
log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recUserName}");
|
log.Debug($"Awarded {(awarding ? 1 : -1)}{awardTypeSym} to {recUserName}");
|
||||||
|
|
||||||
string message = awarding
|
string message = string.Format(currentLocale[
|
||||||
? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), recUserName)
|
awarding ? "jetkarmabot.award.awardmessage" : "jetkarmabot.award.revokemessage"], awardTypeAcc, 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 == recipientId && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id)
|
.Where(aw => aw.ToId == recipientId && aw.AwardTypeId == 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, awardTypeSym);
|
||||||
|
|
||||||
await Client.SendTextMessageAsync(
|
await Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
|
|||||||
@ -28,8 +28,10 @@ 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];
|
||||||
string resp = currentLocale["jetkarmabot.currencies.listtext"] + "\n" + string.Join("\n",
|
string resp = currentLocale["jetkarmabot.currencies.listtext"] + "\n"
|
||||||
(await db.AwardTypes.ToListAsync()).Select(x => $"{x.Symbol} ({x.CommandName}) <i>{currentLocale["jetkarmabot.awardtypes.nominative." + x.CommandName]}</i>"));
|
+ $"★ (star) <i>{currentLocale["jetkarmabot.star.nominative"]}</i>\n"
|
||||||
|
+ string.Join("\n",
|
||||||
|
(await db.AwardTypes.ToListAsync()).Select(x => $"{x.Symbol} ({x.CommandName}) <i>{x.Name}</i>"));
|
||||||
await Client.SendTextMessageAsync(
|
await Client.SendTextMessageAsync(
|
||||||
args.Message.Chat.Id,
|
args.Message.Chat.Id,
|
||||||
resp,
|
resp,
|
||||||
|
|||||||
@ -27,16 +27,22 @@ namespace JetKarmaBot.Commands
|
|||||||
|
|
||||||
string response;
|
string response;
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(awardTypeName))
|
string awardTypeSym;
|
||||||
awardTypeName = "star";
|
sbyte awardTypeId;
|
||||||
|
if (string.IsNullOrWhiteSpace(awardTypeName) || awardTypeName == "star")
|
||||||
|
{
|
||||||
|
awardTypeId = 0;
|
||||||
|
awardTypeSym = "★";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AwardType awardType = await db.AwardTypes.FirstAsync(x => x.CommandName == awardTypeName && x.ChatId == args.Message.Chat.Id);
|
||||||
|
awardTypeSym = awardType.Symbol;
|
||||||
|
awardTypeId = awardType.AwardTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
var awardTypeIdQuery = from awt in db.AwardTypes
|
|
||||||
where awt.CommandName == awardTypeName
|
|
||||||
select awt.AwardTypeId;
|
|
||||||
var awardTypeId = await awardTypeIdQuery.FirstAsync();
|
|
||||||
var awardType = await db.AwardTypes.FindAsync(awardTypeId);
|
|
||||||
|
|
||||||
response = string.Format(currentLocale["jetkarmabot.leaderboard.specifictext"], awardType.Symbol) + "\n" + string.Join('\n',
|
response = string.Format(currentLocale["jetkarmabot.leaderboard.specifictext"], awardTypeSym) + "\n" + string.Join('\n',
|
||||||
await Task.WhenAll((await db.Awards
|
await Task.WhenAll((await db.Awards
|
||||||
.Where(x => x.ChatId == args.Message.Chat.Id && x.AwardTypeId == awardTypeId)
|
.Where(x => x.ChatId == args.Message.Chat.Id && x.AwardTypeId == awardTypeId)
|
||||||
.GroupBy(x => x.ToId)
|
.GroupBy(x => x.ToId)
|
||||||
|
|||||||
@ -41,8 +41,9 @@ namespace JetKarmaBot.Commands
|
|||||||
where award.ToId == asker.Id && (award.ChatId == args.Message.Chat.Id || isPrivate)
|
where award.ToId == asker.Id && (award.ChatId == args.Message.Chat.Id || isPrivate)
|
||||||
group award by award.AwardTypeId into g
|
group award by award.AwardTypeId into g
|
||||||
join awardType in db.AwardTypes
|
join awardType in db.AwardTypes
|
||||||
on g.Key equals awardType.AwardTypeId
|
on g.Key equals awardType.AwardTypeId into awts
|
||||||
select new { AwardTypeId = g.Key, AwardTypeSymbol = awardType.Symbol, Amount = g.Sum(x => x.Amount) };
|
from awt in awts.DefaultIfEmpty()
|
||||||
|
select new { AwardTypeId = g.Key, AwardTypeSymbol = awt == null ? "★" : awt.Symbol, Amount = g.Sum(x => x.Amount) };
|
||||||
var awardsByType = await awardsQuery.ToListAsync();
|
var awardsByType = await awardsQuery.ToListAsync();
|
||||||
response = currentLocale["jetkarmabot.status.listalltext"] + "\n"
|
response = currentLocale["jetkarmabot.status.listalltext"] + "\n"
|
||||||
+ string.Join("\n",
|
+ string.Join("\n",
|
||||||
@ -53,18 +54,26 @@ namespace JetKarmaBot.Commands
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var awardTypeIdQuery = from awt in db.AwardTypes
|
sbyte awardTypeId;
|
||||||
where awt.CommandName == awardTypeName
|
string awardTypeSym;
|
||||||
select awt.AwardTypeId;
|
if (awardTypeName == "star")
|
||||||
var awardTypeId = await awardTypeIdQuery.FirstAsync();
|
{
|
||||||
var awardType = await db.AwardTypes.FindAsync(awardTypeId);
|
awardTypeId = 0;
|
||||||
|
awardTypeSym = "★";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AwardType awardType = await db.AwardTypes.FirstAsync(x => x.CommandName == awardTypeName);
|
||||||
|
awardTypeId = awardType.AwardTypeId;
|
||||||
|
awardTypeSym = awardType.Symbol;
|
||||||
|
}
|
||||||
|
|
||||||
response = string.Format(currentLocale["jetkarmabot.status.listspecifictext"],
|
response = string.Format(currentLocale["jetkarmabot.status.listspecifictext"],
|
||||||
await db.Awards.Where(
|
await db.Awards.Where(
|
||||||
x => x.AwardTypeId == awardTypeId
|
x => x.AwardTypeId == awardTypeId
|
||||||
&& x.ToId == asker.Id
|
&& x.ToId == asker.Id
|
||||||
&& x.ChatId == args.Message.Chat.Id)
|
&& x.ChatId == args.Message.Chat.Id)
|
||||||
.SumAsync(x => x.Amount), awardType.Symbol);
|
.SumAsync(x => x.Amount), awardTypeSym);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Client.SendTextMessageAsync(
|
await Client.SendTextMessageAsync(
|
||||||
|
|||||||
@ -15,6 +15,8 @@ namespace JetKarmaBot.Models
|
|||||||
public string CommandName { get; set; }
|
public string CommandName { get; set; }
|
||||||
public long ChatId { get; set; }
|
public long ChatId { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
[Column("accname")]
|
||||||
|
public string AccusativeName { get; set; }
|
||||||
public string Symbol { get; set; }
|
public string Symbol { get; set; }
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
|||||||
@ -39,17 +39,7 @@
|
|||||||
"jetkarmabot.leaderboard.help": "<todo>",
|
"jetkarmabot.leaderboard.help": "<todo>",
|
||||||
"jetkarmabot.leaderboard.awardtypehelp": "<todo>",
|
"jetkarmabot.leaderboard.awardtypehelp": "<todo>",
|
||||||
"jetkarmabot.leaderboard.specifictext": "<todo>",
|
"jetkarmabot.leaderboard.specifictext": "<todo>",
|
||||||
"jetkarmabot.awardtypes.nominative.star": "зорачка",
|
"jetkarmabot.star.nominative": "зорачка",
|
||||||
"jetkarmabot.awardtypes.nominative.pie": "з паліцы піражок",
|
"jetkarmabot.star.accusative": "зорачку"
|
||||||
"jetkarmabot.awardtypes.nominative.dream": "мара",
|
|
||||||
"jetkarmabot.awardtypes.nominative.banana": "стыкер-бананчык",
|
|
||||||
"jetkarmabot.awardtypes.nominative.determination": "DETERMINATION",
|
|
||||||
"jetkarmabot.awardtypes.nominative.raisin": "разынка",
|
|
||||||
"jetkarmabot.awardtypes.accusative.star": "зорачку",
|
|
||||||
"jetkarmabot.awardtypes.accusative.pie": "з паліцы піражкі",
|
|
||||||
"jetkarmabot.awardtypes.accusative.dream": "мары",
|
|
||||||
"jetkarmabot.awardtypes.accusative.banana": "стыкера-бананчыка",
|
|
||||||
"jetkarmabot.awardtypes.accusative.determination": "DETERMINATION",
|
|
||||||
"jetkarmabot.awardtypes.accusative.raisin": "разыначкі"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,17 +38,7 @@
|
|||||||
"jetkarmabot.leaderboard.help": "Shows the people with the most of a specific award.",
|
"jetkarmabot.leaderboard.help": "Shows the people with the most of a specific award.",
|
||||||
"jetkarmabot.leaderboard.awardtypehelp": "The awardtype to show a leaderboard for.",
|
"jetkarmabot.leaderboard.awardtypehelp": "The awardtype to show a leaderboard for.",
|
||||||
"jetkarmabot.leaderboard.specifictext": "Leaderboard for {0}:",
|
"jetkarmabot.leaderboard.specifictext": "Leaderboard for {0}:",
|
||||||
"jetkarmabot.awardtypes.nominative.star": "star",
|
"jetkarmabot.star.nominative": "star",
|
||||||
"jetkarmabot.awardtypes.nominative.pie": "pie from the shelf",
|
"jetkarmabot.star.accusative": "star"
|
||||||
"jetkarmabot.awardtypes.nominative.dream": "dream",
|
|
||||||
"jetkarmabot.awardtypes.nominative.banana": "banana sticker",
|
|
||||||
"jetkarmabot.awardtypes.nominative.determination": "DETERMINATION",
|
|
||||||
"jetkarmabot.awardtypes.nominative.raisin": "raisin",
|
|
||||||
"jetkarmabot.awardtypes.accusative.star": "star",
|
|
||||||
"jetkarmabot.awardtypes.accusative.pie": "pie from the shelf",
|
|
||||||
"jetkarmabot.awardtypes.accusative.dream": "dream",
|
|
||||||
"jetkarmabot.awardtypes.accusative.banana": "banana sticker",
|
|
||||||
"jetkarmabot.awardtypes.accusative.determination": "DETERMINATION",
|
|
||||||
"jetkarmabot.awardtypes.accusative.raisin": "raisin"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -11,8 +11,8 @@
|
|||||||
"jetkarmabot.award.errawardself": "Хватит с собой играться.",
|
"jetkarmabot.award.errawardself": "Хватит с собой играться.",
|
||||||
"jetkarmabot.award.errawardbot": "Я бот, и меня ваши жалкие пузомерки не интересуют.",
|
"jetkarmabot.award.errawardbot": "Я бот, и меня ваши жалкие пузомерки не интересуют.",
|
||||||
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
"jetkarmabot.award.errrevokebot": "ಠ_ಠ",
|
||||||
"jetkarmabot.award.awardmessage": "Вручил \"{0}\" {1}!",
|
"jetkarmabot.award.awardmessage": "Вручил {0} {1}!",
|
||||||
"jetkarmabot.award.revokemessage": "Отнял \"{0}\" у {1}!",
|
"jetkarmabot.award.revokemessage": "Отнял {0} у {1}!",
|
||||||
"jetkarmabot.award.statustext": "У {0} теперь {1}{2}.",
|
"jetkarmabot.award.statustext": "У {0} теперь {1}{2}.",
|
||||||
"jetkarmabot.award.ratelimit": "Помедленней, чувак!",
|
"jetkarmabot.award.ratelimit": "Помедленней, чувак!",
|
||||||
"jetkarmabot.award.help": "Вручает очко пользователю (или отнимает)",
|
"jetkarmabot.award.help": "Вручает очко пользователю (или отнимает)",
|
||||||
@ -38,17 +38,7 @@
|
|||||||
"jetkarmabot.leaderboard.help": "Таблица лидеров по количеству наград",
|
"jetkarmabot.leaderboard.help": "Таблица лидеров по количеству наград",
|
||||||
"jetkarmabot.leaderboard.awardtypehelp": "Тип награды, по которой покажется отчет.",
|
"jetkarmabot.leaderboard.awardtypehelp": "Тип награды, по которой покажется отчет.",
|
||||||
"jetkarmabot.leaderboard.specifictext": "Передовики в номинации \"{0}\":",
|
"jetkarmabot.leaderboard.specifictext": "Передовики в номинации \"{0}\":",
|
||||||
"jetkarmabot.awardtypes.nominative.star": "звездочка",
|
"jetkarmabot.star.nominative": "звездочка",
|
||||||
"jetkarmabot.awardtypes.nominative.pie": "с полки пирожок",
|
"jetkarmabot.star.accusative": "звездочку"
|
||||||
"jetkarmabot.awardtypes.nominative.dream": "мечта",
|
|
||||||
"jetkarmabot.awardtypes.nominative.banana": "стикер-бананчик",
|
|
||||||
"jetkarmabot.awardtypes.nominative.determination": "РЕШИТЕЛЬНОСТЬ",
|
|
||||||
"jetkarmabot.awardtypes.nominative.raisin": "изюм",
|
|
||||||
"jetkarmabot.awardtypes.accusative.star": "звездочку",
|
|
||||||
"jetkarmabot.awardtypes.accusative.pie": "с полки пирожок",
|
|
||||||
"jetkarmabot.awardtypes.accusative.dream": "мечту",
|
|
||||||
"jetkarmabot.awardtypes.accusative.banana": "стикер-бананчик",
|
|
||||||
"jetkarmabot.awardtypes.accusative.determination": "РЕШИТЕЛЬНОСТЬ",
|
|
||||||
"jetkarmabot.awardtypes.accusative.raisin": "изюм"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7,6 +7,7 @@ CREATE TABLE `awardtype` (
|
|||||||
`commandname` varchar(35) NOT NULL,
|
`commandname` varchar(35) NOT NULL,
|
||||||
`chatid` bigint(20) NOT NULL REFERENCES `chat` (`chatid`),
|
`chatid` bigint(20) NOT NULL REFERENCES `chat` (`chatid`),
|
||||||
`name` varchar(32) NOT NULL,
|
`name` varchar(32) NOT NULL,
|
||||||
|
`accname` varchar(32) NOT NULL,
|
||||||
`symbol` varchar(16) NOT NULL,
|
`symbol` varchar(16) NOT NULL,
|
||||||
`description` text NOT NULL,
|
`description` text NOT NULL,
|
||||||
UNIQUE KEY `un_cnandchat` (`commandname`, `chatid`)
|
UNIQUE KEY `un_cnandchat` (`commandname`, `chatid`)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user