2017-08-11 36 views
0

我正在嘗試使用Discord Bot和discord.Net api包裝來實現日常支付系統(假服務器貨幣)。我的代碼似乎確實正確地更新了這個餘額並識別了日期變化,但似乎沒有記得誰收集了他們的日常付款。請幫忙。謝謝。不協調服務器的日常貨幣系統不能正常工作

using Discord.Commands; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace AmberScript3.Modules 
{ 
    public class DailyMoney : ModuleBase<SocketCommandContext> 
    { 
     List<string> users = new List<string>(); 
     string currentDate = DateTime.Now.ToString("yyyyMMdd"); 

     [Command("money daily")] 
     public async Task DailyCash() 
     { 
      string author = Context.Message.Author.Username; 
      if(DateTime.Now.ToString("yyyyMMdd") != currentDate) 
      { 
       users.Clear(); 
      } 
      if(users.Contains(author)) 
      { 
       await Context.Channel.SendMessageAsync("You have already reclaimed your daily payment!"); 
      } 
      else 
      { 
       users.Add(author); 
       Random r = new Random(); 
       int seed = r.Next(1000); 
       double val = Math.Round(r.NextDouble() * seed, 2); 
       Money.AddBalance(Context.Message.Author.Username, val); 
       await Context.Channel.SendMessageAsync($"Added ${val} to {author}'s account as a daily payment."); 
      } 
      currentDate = DateTime.Now.ToString("yyyyMMdd"); 
     } 
    } 
}` 
+0

您可能需要將用戶保存在某處(文件,數據庫等)。每次這個類被實例化時,用戶列表都被重置。 – maccettura

回答

1

DailyMoney類是抽象的,所以它的每個實例化版本都會有不同的值。我會在本地存儲文本文件中的實例之間保存的內容,然後在創建代碼時將其保存。如果你真的想要,你可以將所有這些值保存在一個單獨的類中,並使用Newtonsoft.Json的JsonConvert.SerializeObjectJsonConvert.DeserializeObject來存儲它。網上有很多關於這些東西的文檔。雖然,只是一個字符串列表,只是將其存儲在一個文本文件中。