/// <summary> /// Removes an instance of a Forum based on the specifications of the Message supplied. /// </summary> /// <param name="msg"></param> public void RemoveInstance(Message msg) { if (msg.MesgType == MessageType.Group && GroupInstances.ContainsKey(msg.GroupId) && GroupInstances[msg.GroupId].ContainsKey(msg.SourceUser)) { GroupInstances[msg.GroupId].Remove(msg.SourceUser); } else if (msg.MesgType == MessageType.Private && PrivateInstances.ContainsKey(msg.SourceUser)) { PrivateInstances.Remove(msg.SourceUser); } }
private void OnMessage(PalBot bot, Message msg) { try { if (msg.MesgType == MessageType.Group && GroupInstances.ContainsKey(msg.GroupId) && GroupInstances[msg.GroupId].ContainsKey(msg.SourceUser)) { GroupInstances[msg.GroupId][msg.SourceUser](msg); return; } if (msg.MesgType == MessageType.Private && PrivateInstances.ContainsKey(msg.SourceUser)) { PrivateInstances[msg.SourceUser](msg); return; } } catch (Exception ex) { bot.On.Trigger("e", ex); return; } DoPluginSort(bot, msg); }
public bool IsInGroupQuestionnaire(int groupid, int userid) { return(GroupInstances.ContainsKey(groupid) ? GroupInstances[groupid].ContainsKey(userid) : false); }
private void DoPluginSort(PalBot bot, Message msg) { var group = msg.GroupId.GetGroup(bot); var user = msg.SourceUser.GetUser(bot); string m = msg.Content.Trim(); foreach (var type in Plugins) { foreach (var meth in type.Value) { var matching = meth.Value.Where(t => m.StartsWith(t.Trigger)).ToArray(); foreach (var Forum in matching) { if (!Forum.Type.HasFlag(msg.MesgType)) { continue; } if (bot.Title != null && Forum.For != null && Forum.For.Length > 0 && !Forum.For.Contains(bot.Title)) { continue; } if (!Forum.PermissionEngine.CheckPermissions(Forum.Permissions, user, group)) { bot.On.Trigger("pf", bot, new FailedPermissionsReport(msg, Forum.Permissions, Forum.Trigger, PluginType.Forum)); continue; } var sm = m.Remove(0, Forum.Trigger.Length).Trim(); var i = (IIForum)Activator.CreateInstance(type.Key); i.Bot = bot; i.Language = Forum.Language; i.Message = msg; i.AttributeInstance = Forum; if (msg.MesgType == MessageType.Group) { if (!GroupInstances.ContainsKey(msg.GroupId)) { GroupInstances.Add(msg.GroupId, new Dictionary <int, Action <Message> >()); } GroupInstances[msg.GroupId].Add(msg.SourceUser, (m2) => { }); } else { PrivateInstances.Add(msg.SourceUser, (m2) => { }); } new Thread(() => { try { meth.Key.Invoke(i, new object[] { sm }); RemoveInstance(msg); } catch (Exception ex) { bot.On.Trigger("e", ex); } }).Start(); } } } }