【发布时间】:2022-05-03 02:39:03
【问题描述】:
我的 Discord Bot 有两个模块:第一个是 UserModule,用户可以执行每个命令,第二个是 AdminModule,服务器管理员可以在其中自定义和设置机器人。现在我在我的 UserModule 中得到了命令Money,这使得机器人告诉执行者他有多少钱。但是管理员还有另一个金钱命令:
[Group("Money")]
class Credits : ModuleBase
{
[Command("add")]
public void AddMoney(IGuildUser user, int amount)
{
int money = Convert.ToInt32(DBConnector.GetInstance().GetDBData
($"SELECT Money FROM Users WHERE UserID = {user.Id} AND ServerID = {Context.Guild.Id}")[0]);
//This will be read from the database in the future
bool capped = false;
if (capped)
{
int maxAmount = Convert.ToInt32(DBConnector.GetInstance().GetDBData
($"SELECT Money FROM Users WHERE UserID = {user.Id} AND ServerID = {Context.Guild.Id}")[0]);
if (money + amount > maxAmount)
{
amount = maxAmount - money;
}
}
DBConnector.GetInstance().ExecuteCommand($"UPDATE Users SET Money=Money+{amount} WHERE UserID = {user.Id} AND ServerID = {Context.Guild.Id}");
}
//some more commands
...
这是 AdminModule 中的一个子模块,显然用于手动向用户添加或移除资金。但是当我想用//money add @user 10 测试命令时,我得到了错误,“输入文本的参数太多”。
这表明,bot 使用的是 UserCommand 而不是 AdminCommand,所以我想知道如何让 bot 实现
"Hey, that command has a usermention and an integer. This is also the case for the admin command. Let me execute that one"
【问题讨论】:
标签: c# discord.net