.clparew finished
This commit is contained in:
parent
7e23877fd8
commit
3cec4f14d0
1456
src/NadekoBot/Migrations/20170401205753_patreon-rewards.Designer.cs
generated
Normal file
1456
src/NadekoBot/Migrations/20170401205753_patreon-rewards.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
40
src/NadekoBot/Migrations/20170401205753_patreon-rewards.cs
Normal file
40
src/NadekoBot/Migrations/20170401205753_patreon-rewards.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace NadekoBot.Migrations
|
||||
{
|
||||
public partial class patreonrewards : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "RewardedUsers",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
AmountRewardedThisMonth = table.Column<int>(nullable: false),
|
||||
DateAdded = table.Column<DateTime>(nullable: true),
|
||||
LastReward = table.Column<DateTime>(nullable: false),
|
||||
UserId = table.Column<ulong>(nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_RewardedUsers", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_RewardedUsers_UserId",
|
||||
table: "RewardedUsers",
|
||||
column: "UserId",
|
||||
unique: true);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "RewardedUsers");
|
||||
}
|
||||
}
|
||||
}
|
@ -931,6 +931,27 @@ namespace NadekoBot.Migrations
|
||||
b.ToTable("Reminders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.RewardedUser", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd();
|
||||
|
||||
b.Property<int>("AmountRewardedThisMonth");
|
||||
|
||||
b.Property<DateTime?>("DateAdded");
|
||||
|
||||
b.Property<DateTime>("LastReward");
|
||||
|
||||
b.Property<ulong>("UserId");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("UserId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("RewardedUsers");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
|
@ -12,6 +12,7 @@ using System.Collections.Immutable;
|
||||
using NadekoBot.Services;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
using NadekoBot.Extensions;
|
||||
using Discord;
|
||||
|
||||
namespace NadekoBot.Modules.Utility
|
||||
{
|
||||
@ -31,10 +32,11 @@ namespace NadekoBot.Modules.Utility
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.PatreonAccessToken))
|
||||
return;
|
||||
if (DateTime.UtcNow.Day < 5)
|
||||
{
|
||||
await ReplyErrorLocalized("clpa_too_early").ConfigureAwait(false);
|
||||
}
|
||||
//if (DateTime.UtcNow.Day < 5)
|
||||
//{
|
||||
// await ReplyErrorLocalized("clpa_too_early").ConfigureAwait(false);
|
||||
// return;
|
||||
//}
|
||||
int amount = 0;
|
||||
try
|
||||
{
|
||||
@ -50,12 +52,13 @@ namespace NadekoBot.Modules.Utility
|
||||
await ReplyConfirmLocalized("clpa_success", amount + NadekoBot.BotConfig.CurrencySign).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
await Context.Channel.EmbedAsync(new Discord.EmbedBuilder().WithOkColor()
|
||||
var helpcmd = Format.Code(NadekoBot.ModulePrefixes[typeof(Help.Help).Name] + "donate");
|
||||
await Context.Channel.EmbedAsync(new EmbedBuilder().WithOkColor()
|
||||
.WithDescription(GetText("clpa_fail"))
|
||||
.AddField(efb => efb.WithName(GetText("clpa_fail_already_title")).WithValue(GetText("clpa_fail_already")))
|
||||
.AddField(efb => efb.WithName(GetText("clpa_fail_wait_title")).WithValue(GetText("clpa_fail_wait")))
|
||||
.AddField(efb => efb.WithName(GetText("clpa_fail_sup_title")).WithValue(GetText("clpa_fail_sup"))))
|
||||
.AddField(efb => efb.WithName(GetText("clpa_fail_conn_title")).WithValue(GetText("clpa_fail_conn")))
|
||||
.AddField(efb => efb.WithName(GetText("clpa_fail_sup_title")).WithValue(GetText("clpa_fail_sup", helpcmd))))
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
@ -129,9 +132,10 @@ namespace NadekoBot.Modules.Utility
|
||||
public async Task<int> ClaimReward(ulong userId)
|
||||
{
|
||||
await claimLockJustInCase.WaitAsync();
|
||||
var now = DateTime.UtcNow;
|
||||
try
|
||||
{
|
||||
var data = Pledges.FirstOrDefault(x => x.User.id == userId.ToString());
|
||||
var data = Pledges.FirstOrDefault(x => x.User.attributes?.social_connections?.discord?.user_id == userId.ToString());
|
||||
|
||||
if (data == null)
|
||||
return 0;
|
||||
@ -148,24 +152,35 @@ namespace NadekoBot.Modules.Utility
|
||||
users.Add(new RewardedUser()
|
||||
{
|
||||
UserId = userId,
|
||||
LastReward = DateTime.UtcNow,
|
||||
LastReward = now,
|
||||
AmountRewardedThisMonth = amount,
|
||||
});
|
||||
|
||||
await CurrencyHandler.AddCurrencyAsync(usr.UserId, "Patreon reward", amount, uow).ConfigureAwait(false);
|
||||
await CurrencyHandler.AddCurrencyAsync(userId, "Patreon reward - new", amount, uow).ConfigureAwait(false);
|
||||
|
||||
await uow.CompleteAsync().ConfigureAwait(false);
|
||||
return amount;
|
||||
}
|
||||
|
||||
if (usr.AmountRewardedThisMonth < amount)
|
||||
if (usr.LastReward.Month != now.Month)
|
||||
{
|
||||
usr.LastReward = now;
|
||||
usr.AmountRewardedThisMonth = amount;
|
||||
|
||||
await CurrencyHandler.AddCurrencyAsync(userId, "Patreon reward - recurring", amount, uow).ConfigureAwait(false);
|
||||
|
||||
await uow.CompleteAsync().ConfigureAwait(false);
|
||||
return amount;
|
||||
}
|
||||
|
||||
if ( usr.AmountRewardedThisMonth < amount)
|
||||
{
|
||||
var toAward = amount - usr.AmountRewardedThisMonth;
|
||||
|
||||
usr.LastReward = DateTime.UtcNow;
|
||||
usr.LastReward = now;
|
||||
usr.AmountRewardedThisMonth = amount;
|
||||
|
||||
await CurrencyHandler.AddCurrencyAsync(usr.UserId, "Patreon reward", toAward, uow).ConfigureAwait(false);
|
||||
await CurrencyHandler.AddCurrencyAsync(usr.UserId, "Patreon reward - update", toAward, uow).ConfigureAwait(false);
|
||||
|
||||
await uow.CompleteAsync().ConfigureAwait(false);
|
||||
return toAward;
|
||||
|
24
src/NadekoBot/Resources/ResponseStrings.Designer.cs
generated
24
src/NadekoBot/Resources/ResponseStrings.Designer.cs
generated
@ -6035,7 +6035,7 @@ namespace NadekoBot.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Maybe you have already received your reward for this month. You can receive rewards only once a month unless you increase your pledge..
|
||||
/// Looks up a localized string similar to Maybe you've already received your reward for this month. You can receive rewards only once a month unless you increase your pledge..
|
||||
/// </summary>
|
||||
public static string utility_clpa_fail_already {
|
||||
get {
|
||||
@ -6053,7 +6053,25 @@ namespace NadekoBot.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to In order to be eligible for the reward, you must support the project on patreon. Use {0} command to get the link..
|
||||
/// Looks up a localized string similar to Your discord account might not be connected to Patreon.. If you are unsure what that means, or don't know how to connect it - you have to go to [Patreon account settings page](https://patreon.com/settings/account) and click 'Connect to discord' button..
|
||||
/// </summary>
|
||||
public static string utility_clpa_fail_conn {
|
||||
get {
|
||||
return ResourceManager.GetString("utility_clpa_fail_conn", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Discord account not connected.
|
||||
/// </summary>
|
||||
public static string utility_clpa_fail_conn_title {
|
||||
get {
|
||||
return ResourceManager.GetString("utility_clpa_fail_conn_title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to In order to be eligible for the reward, you must support the project on patreon. You can use {0} command to get the link..
|
||||
/// </summary>
|
||||
public static string utility_clpa_fail_sup {
|
||||
get {
|
||||
@ -6071,7 +6089,7 @@ namespace NadekoBot.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You have to wait a few hours after making your pledge, if you didn't, waiut a bit and then try again later..
|
||||
/// Looks up a localized string similar to You have to wait a few hours after making your pledge, if you didn't, try again later..
|
||||
/// </summary>
|
||||
public static string utility_clpa_fail_wait {
|
||||
get {
|
||||
|
@ -2373,19 +2373,25 @@ Owner ID: {2}</value>
|
||||
<value>Failed claiming rewards due to one of the following reasons:</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_already" xml:space="preserve">
|
||||
<value>Maybe you have already received your reward for this month. You can receive rewards only once a month unless you increase your pledge.</value>
|
||||
<value>Maybe you've already received your reward for this month. You can receive rewards only once a month unless you increase your pledge.</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_already_title" xml:space="preserve">
|
||||
<value>Already rewarded</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_conn" xml:space="preserve">
|
||||
<value>Your discord account might not be connected to Patreon.. If you are unsure what that means, or don't know how to connect it - you have to go to [Patreon account settings page](https://patreon.com/settings/account) and click 'Connect to discord' button.</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_conn_title" xml:space="preserve">
|
||||
<value>Discord account not connected</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_sup" xml:space="preserve">
|
||||
<value>In order to be eligible for the reward, you must support the project on patreon. Use {0} command to get the link.</value>
|
||||
<value>In order to be eligible for the reward, you must support the project on patreon. You can use {0} command to get the link.</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_sup_title" xml:space="preserve">
|
||||
<value>Not supporting</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_wait" xml:space="preserve">
|
||||
<value>You have to wait a few hours after making your pledge, if you didn't, waiut a bit and then try again later.</value>
|
||||
<value>You have to wait a few hours after making your pledge, if you didn't, try again later.</value>
|
||||
</data>
|
||||
<data name="utility_clpa_fail_wait_title" xml:space="preserve">
|
||||
<value>Wait some time</value>
|
||||
|
@ -1,15 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services.Database.Models
|
||||
{
|
||||
public class PatreonRewards : DbEntity
|
||||
{
|
||||
public ulong UserId { get; set; }
|
||||
public ulong PledgeCents { get; set; }
|
||||
public ulong Awarded { get; set; }
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace NadekoBot.Services.Database.Models
|
||||
{
|
||||
public class RewardedUser
|
||||
public class RewardedUser : DbEntity
|
||||
{
|
||||
public ulong UserId { get; set; }
|
||||
public int AmountRewardedThisMonth { get; set; }
|
||||
|
@ -51,6 +51,7 @@ namespace NadekoBot.Services.Database
|
||||
public DbSet<EightBallResponse> EightBallResponses { get; set; }
|
||||
public DbSet<RaceAnimal> RaceAnimals { get; set; }
|
||||
public DbSet<ModulePrefix> ModulePrefixes { get; set; }
|
||||
public DbSet<RewardedUser> RewardedUsers { get; set; }
|
||||
|
||||
public NadekoContext() : base()
|
||||
{
|
||||
@ -277,6 +278,12 @@ namespace NadekoBot.Services.Database
|
||||
#region Warnings
|
||||
var warn = modelBuilder.Entity<Warning>();
|
||||
#endregion
|
||||
|
||||
#region PatreonRewards
|
||||
var pr = modelBuilder.Entity<RewardedUser>();
|
||||
pr.HasIndex(x => x.UserId)
|
||||
.IsUnique();
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user