public ServerCallback(Fancyauth fancyauth, Steam.SteamListener steamListener, Server server, ContextCallbackManager contextCallbackMgr, CommandManager cmdmgr) : base(fancyauth.StashCallback) { Fancyauth = fancyauth; SteamListener = steamListener; Server = server; CommandMgr = cmdmgr; }
async Task ISteamEventForwarder.OnChatMessage(SteamListener steamListener, SteamID sender, string message) { using (var context = await FancyContext.Connect()) using (var transact = context.Database.BeginTransaction(IsolationLevel.Serializable)) { var steam64 = unchecked ((long)sender.ConvertToUInt64()); var currentGame = unchecked ((int)(steamListener.GetCurrentGameId(sender) ?? 0)); var user = await context.Users.Where(x => x.Membership.SteamId == steam64).SingleAsync(); if (message == "@fancy-ng forward") { context.SteamChatForwardingAssociations.Add(new Model.SteamChatForwardingAssociation { User = user, AppId = currentGame, }); } else if (message == "@fancy-ng noforward") { var assoc = await context.SteamChatForwardingAssociations.FindAsync(user.Id, currentGame); if (assoc != null) { context.SteamChatForwardingAssociations.Remove(assoc); } } else if (message.StartsWith("@fancy-ng ")) { steamListener.SendMessage(sender, "Unknown command. Commands are: forward, noforward"); } else { // foward to mumble var mumbleUser = (await Server.GetUsers()).Values.Single(x => x.userid == user.Id); await Server.SendMessageChannel(mumbleUser.channel, false, user.Name + "(via Steam): " + message); } await context.SaveChangesAsync(); transact.Commit(); } }