Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# discord服务器的每日货币系统工作不正常_C#_.net_Discord.net - Fatal编程技术网

C# discord服务器的每日货币系统工作不正常

C# discord服务器的每日货币系统工作不正常,c#,.net,discord.net,C#,.net,Discord.net,我正在尝试使用Discord Bot和Discord.NETAPI包装器实现一个每日支付系统伪造服务器货币。我的代码似乎正确地更新了余额并识别了日期变化,但它似乎不记得是谁收取了他们的每日付款。请帮忙。谢谢 using Discord.Commands; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; names

我正在尝试使用Discord Bot和Discord.NETAPI包装器实现一个每日支付系统伪造服务器货币。我的代码似乎正确地更新了余额并识别了日期变化,但它似乎不记得是谁收取了他们的每日付款。请帮忙。谢谢

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");
        }
    }
}`

DailyMoney类是抽象的,因此它的每个实例化版本都有不同的值。我将在本地文本文件中存储您希望在实例化之间保留的内容,然后在创建时在代码中获取它们。如果确实需要,可以将所有这些值保存在一个单独的类中,并使用Newtonsoft.Json的JsonConvert.SerializeObject和JsonConvert.DeserializeObject来存储它。网上有很多关于这些东西的文档。不过,对于一个字符串列表,只需将其存储在文本文件中。

您可能需要将用户持久化到文件、数据库等的某个位置。每次实例化此类时,都会重置用户列表。