是否可以使用异步任务永久更改 Bool 值?
Is it possible to permanently change Bool Value with Async Task?
我正在开发一个 Discord Bot,它将允许版主撤销功能的可用性(掷骰子)。我的目标是将它放在 if bool a = true; roll the dice
的位置。 bool a = false; deny
。版主会用一个单独的函数更改布尔值,他们可以在其中更改 a 的布尔值并让它保持原样。
我试过将布尔值分配给一个单独的 class 并使用 get 和 set,但该值要么没有改变,要么立即变回原样。
[Command("diceRoll")]
[Summary("Turns on/off the ability to use the Dice Roll function")]
public async Task DiceRoll(string toggle)
{
switch (toggle)
{
case "on":
case "On":
case "ON":
diceToggle.DiceBool = true;
await Context.Channel.SendMessageAsync("Dice Roll Function: ON");
break;
case "off":
case "Off":
case "OFF":
diceToggle.DiceBool = false;
await Context.Channel.SendMessageAsync("Dice Roll Function: OFF");
break;
default:
await Context.Channel.SendMessageAsync("Dice Roll Function: ERROR");
break;
}
}
[Command("roll")]
[Summary("Dice Roll")]
public async Task Dice(int number)
{
if (diceToggle.DiceBool == true)
{
int randNumber = rand.Next(1, number);
if (randNumber == 8 || randNumber == 11 || randNumber == 18)
{ await Context.Channel.SendMessageAsync("You rolled an " + randNumber + "."); }
else
{ await Context.Channel.SendMessageAsync("You rolled a " + randNumber + "."); }
}
else if (diceToggle.DiceBool == false)
{
await Context.Channel.SendMessageAsync("This feature has been disabled.");
}
else
{
await Context.Channel.SendMessageAsync("Something broke, please fix.");
}
}
}
public class Game
{
private bool diceBool;
public bool DiceBool
{
get { return diceBool; }
set
{
if (diceBool != value)
{
diceBool = value;
}
}
}
}
我预计当调用 "diceRoll on/off" 命令时,"roll" 命令将停止工作或再次工作。当前,调用了该命令,但布尔值未更改或未保持更改。
您无法 "save" 值的原因是模块在 Discord.Net 中的工作方式。类似于 ASP.NET,模块是瞬态的,这意味着它们在执行后从内存中销毁。请查看完整详情 here
我正在开发一个 Discord Bot,它将允许版主撤销功能的可用性(掷骰子)。我的目标是将它放在 if bool a = true; roll the dice
的位置。 bool a = false; deny
。版主会用一个单独的函数更改布尔值,他们可以在其中更改 a 的布尔值并让它保持原样。
我试过将布尔值分配给一个单独的 class 并使用 get 和 set,但该值要么没有改变,要么立即变回原样。
[Command("diceRoll")]
[Summary("Turns on/off the ability to use the Dice Roll function")]
public async Task DiceRoll(string toggle)
{
switch (toggle)
{
case "on":
case "On":
case "ON":
diceToggle.DiceBool = true;
await Context.Channel.SendMessageAsync("Dice Roll Function: ON");
break;
case "off":
case "Off":
case "OFF":
diceToggle.DiceBool = false;
await Context.Channel.SendMessageAsync("Dice Roll Function: OFF");
break;
default:
await Context.Channel.SendMessageAsync("Dice Roll Function: ERROR");
break;
}
}
[Command("roll")]
[Summary("Dice Roll")]
public async Task Dice(int number)
{
if (diceToggle.DiceBool == true)
{
int randNumber = rand.Next(1, number);
if (randNumber == 8 || randNumber == 11 || randNumber == 18)
{ await Context.Channel.SendMessageAsync("You rolled an " + randNumber + "."); }
else
{ await Context.Channel.SendMessageAsync("You rolled a " + randNumber + "."); }
}
else if (diceToggle.DiceBool == false)
{
await Context.Channel.SendMessageAsync("This feature has been disabled.");
}
else
{
await Context.Channel.SendMessageAsync("Something broke, please fix.");
}
}
}
public class Game
{
private bool diceBool;
public bool DiceBool
{
get { return diceBool; }
set
{
if (diceBool != value)
{
diceBool = value;
}
}
}
}
我预计当调用 "diceRoll on/off" 命令时,"roll" 命令将停止工作或再次工作。当前,调用了该命令,但布尔值未更改或未保持更改。
您无法 "save" 值的原因是模块在 Discord.Net 中的工作方式。类似于 ASP.NET,模块是瞬态的,这意味着它们在执行后从内存中销毁。请查看完整详情 here