我想实现一个获取用户名的命令并执行以下操作:
检查名称是否在列表中
如果名称不在列表中,则将名称发回给用户 告诉用户他已经使用了命令
(仅限2.a)将用户名写入列表
但我收到以下错误:
命名空间不能直接包含字段或方法等成员
这是我的代码:
public List<string> names;
public class Test : ModuleBase<SocketCommandContext>
{
[Command("myname")]
private async Task test()
{
string name = Context.User.Username;
if (!names.Contains(name))
{
await Context.Channel.SendMessageAsync("Your name is **" + name + "**!");
names.Add(name);
}
else
{
await Context.Channel.SendMessageAsync("I've already told you your name!");
}
}
}
答案 0 :(得分:1)
由于您的错误消息(应该从评论移到问题中)已经明确了
命名空间不能直接包含字段或方法等成员
您正在课堂_message
之外定义public List<string> names;
,这导致它位于命名空间内,不允许这样做。
要解决您的问题,请移动
行Test
进入班级public List<string> names;
。