尝试读取文本文件后 Discord 命令停止

Discord command stops after attempting to read text file

我正在尝试制作一个将一些数据保存到文本文件的 discord 机器人。但是,当我执行命令时,创建流 reader 的行会停止命令。

我试过将流 reader 放在一个单独的函数中 我已经尝试在命令执行之前执行函数并通过字符串获取数据

public class Commands : ModuleBase<SocketCommandContext>
{
    [Command("create")]
    [Summary("Creates a new group")]
    public async Task Create(IRole role)
    {
        //check for duplicates
        StreamReader reader = new StreamReader(Path.Combine(Directory.GetCurrentDirectory(), "Data.txt"));
        //Code will not go pass this line
        Console.WriteLine(reader.ReadToEnd());
        await ReplyAsync("Making " + role + " into a group");
    }
}

我希望能够读取文件(我将用它来检查角色的重复项)并继续执行命令并让机器人说 "Making role into a group" 但是当我执行命令时,机器人什么也没说,代码在尝试创建流后停止 reader。然而,机器人继续 运行 没有错误,因为它只是阻止命令进一步执行。

首先,在 System.IO 命名空间中,您可以使用辅助方法轻松读取整个文件并创建包含其内容的字符串,所有这些都在一个编程语句中完成。这样就省去了必须写出整个流式传输过程的麻烦,我认为这对您的目的是有益的。

string rawTextFromFile = File.ReadAllText(pathToFileAsString);

如果您希望每一行作为字符串数组中的单独索引,也有一个函数:

string[] rawLinesFromFile = File.ReadAllLines(pathToFileAsString);

如果我的解决方案对您没有帮助,或者您的机器人还有其他问题,您可以使用 try-catch 块,您可能会在控制台日志中看到问题。此外,这将阻止机器人崩溃,因为它将处理错误并继续其调用堆栈中的下一步。

try
{
    (your code here)
}
catch(e)
{
    Console.WriteLine(e.message);
}

我设法通过将保存功能放在异步函数的不同 class 文件中来解决这个问题。我在创建一个新的机器人后发现了这一点。还是不知道发生了什么。