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

时间:2019-06-22 15:51:23

标签: c# .net-core discord.net

我正在尝试制作一个将某些数据保存到文本文件的不和谐机器人。但是,当我执行命令时,创建流读取器的行将停止该命令。

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

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

我希望能够读取文件(我将使用该文件检查角色的重复项)并继续执行命令,并让漫游器说“将角色放入组中”,但是当我执行命令时,僵尸程序什么也没说,尝试创建流阅读器后代码停止。但是,该僵尸程序继续运行,没有任何错误,因为它只是停止了该命令的进一步执行。

2 个答案:

答案 0 :(得分:0)

首先,在System.IO命名空间中,您可以使用帮助程序方法轻松读取整个文件并创建包含其内容的字符串,所有这些操作均在单个编程语句中。这样可以省去编写整个流传输过程的麻烦,我认为这对您的目的将是有益的。

string rawTextFromFile = File.ReadAllText(pathToFileAsString);

如果您希望将每一行作为字符串数组中的单独索引,则也可以使用该函数:

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

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

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

答案 1 :(得分:0)

我以某种方式设法通过将保存功能放在异步功能的其他类文件中来解决此问题。创建新的漫游器后,我发现了这一点。还是不知道发生了什么。