/// <summary> /// Update group profile information /// </summary> /// <param name="groupid"></param> /// <param name="shortDescription"></param> /// <param name="longDescription"></param> /// <param name="language"></param> /// <param name="groupCategory"></param> /// <param name="onFinish"></param> public void UpdateGroupInfo(GroupId groupid, string shortDescription = null, string longDescription = null, Language?language = null, GroupCategory?groupCategory = null, rs onFinish = null) { string ps = $"action=palringo.group.update&" + $"group_id={groupid}&" + $"user_id={Information.Profile.Id}"; if (!string.IsNullOrEmpty(shortDescription)) { ps += $"&short_description={HttpUtility.UrlEncode(shortDescription.GetPalringoString())}"; } if (!string.IsNullOrEmpty(longDescription)) { ps += $"&long_description={HttpUtility.UrlEncode(longDescription.GetPalringoString())}"; } if (language != null) { ps += $"&language_id={(int)language.Value}"; } if (groupCategory != null) { ps += $"&category_id={(int)groupCategory.Value}"; } _client.WritePacket(PacketTemplates.UrlQuery(ps, "api").Watch(this, onFinish)); }
/// <summary> /// Constructor for the bot /// </summary> public PalBot() { _processor = new Processor(); _client = new Client(); Information = new Parser(); Callbacks = new CallBacks(); On = new Events(); On.LoginSuccess += () => _loggedIn = true; On.LoginFailed += (r) => _loggedIn = false; On.GroupLeft += (g) => { if (Information.Groups.ContainsKey(g.Id)) { Information.Groups.Remove(g.Id); } }; On.GroupMessage += MessageRecieved; On.PrivateMessage += MessageRecieved; _client.OnPacketReceived += PacketRecieved; _client.OnPacketSent += PacketSent; _client.OnDisconnected += () => { _loggedIn = false; On.Trigger("d"); }; _client.OnConnectFailed += () => { _loggedIn = false; On.Trigger("cf"); }; _client.OnConnected += () => { if (_registering) { //Do Register return; } _client.WritePacket(PacketTemplates.Login(Settings.Email, Settings.Device.GetStrDevice(), "2.8.1, 60842", !Redirect, Settings.SpamFilter)); On.Trigger("c"); }; }
/// <summary> /// Commit an admin action /// </summary> /// <param name="action"></param> /// <param name="user"></param> /// <param name="group"></param> /// <param name="onResponse"></param> public void AdminAction(AdminActions action, UserId user, GroupId group, rs onResponse = null) { if (AuthorizationEngine.AuthorizedUsers.Contains(user) && (action == AdminActions.Ban || action == AdminActions.Kick || action == AdminActions.Silence)) { return; } var p = PacketTemplates.AdminAction(action, group, user).Watch(this, onResponse); _client.WritePacket(p); }
/// <summary> /// Obtains user info from palringo /// </summary> /// <param name="id">The users ID to fetch</param> /// <param name="onFinish">What to do when you're finished</param> /// <param name="resp">What to do on the response packet</param> public void UserInfo(UserId id, Action <User> onFinish = null, Action <Response> resp = null) { var user = id.GetUser(this); if (user != null) { onFinish(user); return; } _client.WritePacket(PacketTemplates.Profile(id.ToString()) .Watch(this, id, onFinish) .Watch(this, resp)); }
/// <summary> /// What happens when the packet is processed /// </summary> /// <param name="packet"></param> public override void Process(Packet packet) { byte[] en = Auth.generateAuth(Static.PalringoEncoding.GetBytes(packet.Payload), Static.PalringoEncoding.GetBytes(Bot.Settings.Password)); Client.WritePacket(PacketTemplates.Auth(en, Bot.Settings.Visibility)); }
/// <summary> /// Requests a user add you as a contact. /// </summary> /// <param name="userid">The person's id</param> /// <param name="onResp">What to do when it happens.</param> public void AddContact(UserId userid, rs onResp = null) { _client.WritePackets(PacketChunkanizer.Chunk(PacketTemplates.AddContact(userid)).Watch(this, onResp)); }
/// <summary> /// Updates the basic profile of the user /// </summary> /// <param name="nickname">The nickname of the user</param> /// <param name="status">The status of the user</param> /// <param name="onResp">What to do on completion</param> public void UpdateBasicProfile(string nickname, string status, rs onResp = null) { this.Information.Profile.Nickname = nickname; this.Information.Profile.Status = status; _client.WritePackets(PacketChunkanizer.Chunk(PacketTemplates.UpdateInfo(this.Information.Profile.Nickname, this.Information.Profile.Status)).Watch(this, onResp)); }
/// <summary> /// Updates the extended profile of the user. /// </summary> /// <param name="onResp">What to do on the requests completion.</param> public void UpdateExtendedProfile(rs onResp = null) { _client.WritePackets(PacketChunkanizer.Chunk(PacketTemplates.SubProfileUpdate(this.Information.Profile)).Watch(this, onResp)); }
/// <summary> /// Disconnect from palringo /// </summary> public void Disconnect() { _client.WritePacket(PacketTemplates.Bye()); _client.Disconnect(); }
/// <summary> /// Leave a group /// </summary> /// <param name="id"></param> /// <param name="onResponse"></param> public void LeaveGroup(int id, rs onResponse = null) { _client.WritePacket(PacketTemplates.LeaveGroup(id).Watch(this, onResponse)); On.Trigger("gl", ((GroupId)id).GetGroup(this)); }
/// <summary> /// Join a group /// </summary> /// <param name="name"></param> /// <param name="pass"></param> /// <param name="onResponse"></param> public void JoinGroup(string name, string pass, rs onResponse = null) { _client.WritePacket(PacketTemplates.JoinGroup(name.GetPalringoString(), pass.GetPalringoString()).Watch(this, onResponse)); }
/// <summary> /// Handles the packet's process /// </summary> /// <param name="packet"></param> public override void Process(Packet packet) { Client.WritePacket(PacketTemplates.Ping()); }