Я настроил команду stats
следующим образом
[Command("Stats")]
public async Task StatsOther(SocketUser socketUser = null)
{
if (socketUser == null)
{
socketUser = Context.User;
}
var account = UserAccounts.GetAccount(socketUser);
await Context.Channel.SendMessageAsync($"Hey {socketUser.Mention}, You have {account.Size} long sandwhiches and {account.XP} XP.");
}
И класс UserAccounts
ищет, существует ли в нашей базе данных socketUser
со свойством ID
. Теперь скажем, что один и тот же пользователь находится в другой гильдии. Мне нужно хранить для него разные данные, но socketUser.ID
будет одинаковым независимо от гильдии. Таким образом, когда пользователь попытается использовать команду stats
, он увидит одни и те же данные независимо от того, в какой гильдии он сейчас находится.
Вот где UserAccounts.GetAccount
ведет и делает свое дело,
public static UserAccount GetAccountFromID(ulong ID)
{
var result = from a in accounts
where a.ID == ID
select a;
var FoundAccount = result.FirstOrDefault();
if (FoundAccount == null)
{
FoundAccount = CreateUserAccount(ID);
}
return FoundAccount;
}
Очевидно, что запрос linq проверяет идентификаторы, и они одинаковы для пользователя независимо от гильдии.
Я пытался использовать SocketGuildUser
, но, к сожалению, socketGuildUser.ID
также не зависит от гильдии. Поэтому я не могу хранить разные данные для одного и того же пользователя из разных гильдий. Использование последней доступной бета-версии.
Как я могу этого добиться.