尝试读取文本文件后 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 文件中来解决这个问题。我在创建一个新的机器人后发现了这一点。还是不知道发生了什么。
我正在尝试制作一个将一些数据保存到文本文件的 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 文件中来解决这个问题。我在创建一个新的机器人后发现了这一点。还是不知道发生了什么。