public Channel(IChatMember creator) { Members = new ChatMember[1]; Members[0] = creator; Messages = new Message[0]; ChatId = Guid.NewGuid(); }
public void EditRoleOfMember(Guid chatId, ChatMemberRole newRole, IChatMember editor, IChatMember editingPerson) { for (int i = 0; i < _privateChats.Count; i++) { if (_privateChats[chatId].ChatId == chatId) { _privateChats[chatId].EditRoleOfMember(newRole, editor, editingPerson); break; } } for (int i = 0; i < _groupChats.Count; i++) { if (_groupChats[chatId].ChatId == chatId) { _groupChats[chatId].EditRoleOfMember(newRole, editor, editingPerson); break; } } for (int i = 0; i < _channels.Count; i++) { if (_channels[chatId].ChatId == chatId) { _channels[chatId].EditRoleOfMember(newRole, editor, editingPerson); break; } } }
public void EditMessage(Guid chatId, IMessage message, string newMessage, IChatMember member) { for (int i = 0; i < _privateChats.Count; i++) { if (_privateChats[chatId].ChatId == chatId) { _privateChats[chatId].EditMessage(message, newMessage, member); break; } } for (int i = 0; i < _groupChats.Count; i++) { if (_groupChats[chatId].ChatId == chatId) { _groupChats[chatId].EditMessage(message, newMessage, member); break; } } for (int i = 0; i < _channels.Count; i++) { if (_channels[chatId].ChatId == chatId) { _channels[chatId].EditMessage(message, newMessage, member); break; } } }
public void InviteUser(Guid chatId, IChatMember member, IUser invitedUser) { for (int i = 0; i < _privateChats.Count; i++) { if (_privateChats[chatId].ChatId == chatId) { _privateChats[chatId].InviteUser(member, invitedUser); break; } } for (int i = 0; i < _groupChats.Count; i++) { if (_groupChats[chatId].ChatId == chatId) { _groupChats[chatId].InviteUser(member, invitedUser); break; } } for (int i = 0; i < _channels.Count; i++) { if (_channels[chatId].ChatId == chatId) { _channels[chatId].InviteUser(member, invitedUser); break; } } }
public void Notify(IChatMember member, string status) { DateTime currentDateTime = DateTime.Now; Send(currentDateTime.ToString()); Send($"**** {member.UserName} {status} the chat. ****\n"); }
public void SendMessage(Guid chatId, IChatMember member, string message) { for (int i = 0; i < _privateChats.Count; i++) { if (_privateChats[chatId].ChatId == chatId) { _privateChats[chatId].SendMessage(message, member); break; } } for (int i = 0; i < _groupChats.Count; i++) { if (_groupChats[chatId].ChatId == chatId) { _groupChats[chatId].SendMessage(message, member); break; } } for (int i = 0; i < _channels.Count; i++) { if (_channels[chatId].ChatId == chatId) { _channels[chatId].SendMessage(message, member); break; } } }
public static void NotifyChatMember(IChatMember memberski, string status) { foreach (KeyValuePair <IChatMember, string> member in members) { member.Key.Notify(memberski, status); } }
public void AddToChat(IChatMember chatMember) { AddToChatNotification(this, new ChatArgs(chatMember)); chat.ChatMembers.Add(chatMember); AddToChatNotification += chatMember.ReceiveAddToChatNotification; RemoveFromChatNotification += chatMember.ReceiveRemoveFromChatNotification; }
public override bool CanSendMessage(IChatMember member) { if (IsParticipant(member) && member.Role == ChatMemberRole.Admin) { return(true); } return(false); }
/// <summary> /// Initializes a new instance of the <see cref="ChatSession" /> class. /// </summary> /// <param name="chatMember">The chat member.</param> /// <exception cref="ArgumentNullException">chatMember</exception> public ChatSession(IChatMember chatMember) { if (chatMember == null) { throw new ArgumentNullException(nameof(chatMember)); } this.ChatMember = chatMember; }
public void EditMessage(IMessage message, string newMesssage, IChatMember member) { if (IsHavingRights(member, message)) { message.Text = newMesssage; } else { throw new NotImplementedException(); } }
public override void EditRoleOfMember(ChatMemberRole newRole, IChatMember editor, IChatMember editingPerson) { if (editor.Role == ChatMemberRole.Creator && IsParticipant(editingPerson)) { editingPerson.Role = newRole; } else { throw new NotImplementedException(); } }
public bool IsParticipant(IChatMember member) { foreach (var chatMember in Members) { if (chatMember.Id == member.Id) { return(true); } } return(false); }
public override void DeleteMessage(IMessage message, IChatMember member) { if (IsHavingRights(member, message)) { List <IMessage> listOfMessages = Messages.ToList(); listOfMessages.Remove(message); Messages = listOfMessages.ToArray(); } else { throw new NotImplementedException(); } }
public override bool IsHavingRights(IChatMember member, IMessage message) { foreach (var chatMessage in Messages) { if (IsParticipant(member) && message.SenderId == member.Id && message.MessageId == chatMessage.MessageId) { return(true); break; } } return(false); }
public virtual void InviteUser(IChatMember member, IUser invitedPerson) { if ((member.Role == ChatMemberRole.Creator || member.Role == ChatMemberRole.Admin)) { List <IChatMember> listOfMembers = Members.ToList(); listOfMembers.Add(new ChatMember(invitedPerson.Id, invitedPerson.NickName, ChatMemberRole.User)); Members = listOfMembers.ToArray(); } else { throw new NotImplementedException(); } }
public override bool IsHavingRights(IChatMember member, IMessage message) { foreach (var chatMessage in Messages) { if (IsParticipant(member) && (member.Role == ChatMemberRole.Creator || member.Role == ChatMemberRole.Admin) && message.MessageId == chatMessage.MessageId) { return(true); break; } } return(false); }
public void SendMessage(string messageText, IChatMember member) { if (CanSendMessage(member)) { Message newMessage = new Message(Guid.NewGuid(), messageText, member.Id, DateTimeOffset.Now); List <IMessage> listOfMessages = Messages.ToList(); listOfMessages.Add(newMessage); Messages = listOfMessages.ToArray(); } else { throw new NotImplementedException(); } }
public void SendMessage(IChatMember from, string message) { chat.ChatMessages.Add(new Tuple <IChatMember, string>(from, message)); if (message == "addBot") { IChatMember bot = new ChatBotFactory(this).Create("Angry Bot"); AddMessage += bot.ReceiveAddedMessageNotification; this.AddToChat(bot); return; } AddMessage(this, new ChatArgs(from, message)); foreach (var item in chat.ChatMembers) { if (item != from) { AddMessage += item.ReceiveAddedMessageNotification; } } }
static void Main(string[] args) { IMediator _mediator = new ChatMediator(); _mediator.CreateChat(); IFactory _userFactory = new UserFactory(_mediator); IChatMember userJJ = _userFactory.Create("JJ"); IChatMember userPJ = _userFactory.Create("PJ"); IChatMember userRJ = _userFactory.Create("RJ"); _mediator.AddToChat(userJJ); _mediator.AddToChat(userPJ); _mediator.AddToChat(userRJ); userJJ.SendMessage(""); userPJ.SendMessage("addBot"); userJJ.SendMessage("cat"); Console.ReadLine(); }
public void RemoveFromChat(IChatMember chatMember) { AddToChatNotification -= chatMember.ReceiveAddToChatNotification; RemoveFromChatNotification -= chatMember.ReceiveRemoveFromChatNotification; RemoveFromChatNotification(this, new ChatArgs(chatMember)); }
private void Skype_ChatMemberRoleChanged(IChatMember ichatmember, TChatMemberRole role) { this.Logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name); }
public void CreateChannel(IChatMember creator) { _channels.Add(Guid.NewGuid(), (Channel)factory.CreateChannel(creator)); }
public void CreateGroupChat(IChatMember creator) { _groupChats.Add(Guid.NewGuid(), (Group)factory.CreateGroup(creator)); }
public ChatArgs(IChatMember chatMember) { ChatMember = chatMember; }
public void CreatePrivateChat(IChatMember creator, IChatMember invitedUser) { _privateChats.Add(Guid.NewGuid(), (PrivateChat)factory.CreatePrivateChat(creator, invitedUser)); }
public IChat CreatePrivateChat(IChatMember creatorUser, IChatMember invitedUser) { IChat privateChat = new PrivateChat(new IChatMember[] { creatorUser, invitedUser }); return(privateChat); }
public IChat CreateChannel(IChatMember creatorUser) { IChat channel = new Channel(creatorUser); return(channel); }
public IChat CreateGroup(IChatMember creatorUser) { IChat group = new Group(creatorUser); return(group); }
public ChatArgs(IChatMember chatMember, string message) { ChatMember = chatMember; Message = message; }
public void skype_MessageStatus(ChatMessage pMessage, TChatMessageStatus Status) { #region Speaker Commands if (Status != TChatMessageStatus.cmsRead && pMessage.FromHandle != "async.bot" && (speakerList.Items.Contains(pMessage.FromHandle) || masterList.Items.Contains(pMessage.FromHandle))) { if (pMessage.Body.ToString() == "ping") { pMessage.Chat.SendMessage("[BOT]: pong"); } else if (pMessage.Body.ToString() == "pong") { pMessage.Chat.SendMessage("[BOT]: ping"); } else if (pMessage.Body.ToString().StartsWith("!insult ")) { string speaker = pMessage.Body.ToString().Substring(("!insult ").Length, pMessage.Body.ToString().Length - ("!insult ").Length); pMessage.Chat.SendMessage("[BOT]: " + speaker + " is fat, ugly and hapless."); } else if (pMessage.Body.ToString().StartsWith("!voteKick ")) { string speaker = pMessage.Body.ToString().Substring(("!voteKick ").Length, pMessage.Body.ToString().Length - ("!voteKick ").Length); if (!TempUserListContains(speaker)) { tempUsers.Add(new TempUser(speaker)); } TempUser user = GetTempUser(speaker); try { if (!user.voters.Contains(pMessage.FromHandle)) { user.voteKick++; user.voters.Add(pMessage.FromHandle); pMessage.Chat.SendMessage("[BOT]: Thank-you for voting. Vote kick count now at: " + user.voteKick + "."); if (user.voteKick >= 3) { pMessage.Chat.SendMessage("/kick " + speaker); pMessage.Chat.SendMessage("[BOT]: Voting closed. Attempting to kick " + speaker + "."); } } else { pMessage.Chat.SendMessage("[BOT]: " + pMessage.FromHandle + " has already voted!"); } } catch (Exception ex) { Trace(ex.ToString()); } } else if (pMessage.Body.ToString().StartsWith("!voteKickAgainst ")) { string speaker = pMessage.Body.ToString().Substring(("!voteKickAgainst ").Length, pMessage.Body.ToString().Length - ("!voteKickAgainst ").Length); if (!TempUserListContains(speaker)) { tempUsers.Add(new TempUser(speaker)); } TempUser user = GetTempUser(speaker); if (!user.voters.Contains(pMessage.FromHandle)) { user.voteKick--; user.voters.Add(pMessage.FromHandle); pMessage.Chat.SendMessage("[BOT]: Thank-you for voting. Vote kick count now at: " + user.voteKick + "."); if (user.voteKick >= 3) { pMessage.Chat.SendMessage("/kick " + speaker); pMessage.Chat.SendMessage("[BOT]: Voting closed. Attempting to kick " + speaker + "."); } } else { pMessage.Chat.SendMessage("[BOT]: " + pMessage.FromHandle + " has already voted!"); } } else if (pMessage.Body.ToString().StartsWith("!respect ")) { string speaker = pMessage.Body.ToString().Substring(("!respect ").Length, pMessage.Body.ToString().Length - ("!respect ").Length); if (!TempUserListContains(speaker)) { tempUsers.Add(new TempUser(speaker)); } TempUser user = GetTempUser(speaker); if (!user.respecters.Contains(pMessage.FromHandle)) { user.respect++; user.respecters.Add(pMessage.FromHandle); pMessage.Chat.SendMessage("[BOT]: " + speaker + " has now got " + user.respect + " respect."); } else { pMessage.Chat.SendMessage("[BOT]: " + pMessage.FromHandle + " has already voted!"); } } else if (pMessage.Body.ToString().ToLower().StartsWith("!help")) { pMessage.Chat.SendMessage("Please keep in mind all commands are case-sensitive, and you must replace [username] with the username, NOT the display name!"); pMessage.Chat.SendMessage("!voteKick [username] - Votes in favour of kicking someone. When vote kick count reaches 3, user is automatically kicked."); pMessage.Chat.SendMessage("!voteKickAgainst [username] - Votes against of kicking someone. When vote kick count reaches 3, user is automatically kicked."); pMessage.Chat.SendMessage("!insult [username] - Insults user."); pMessage.Chat.SendMessage("!respect [username] - Awards user some respect."); pMessage.Chat.SendMessage("!ping [username] - Bot replies pong if it's listening to you."); pMessage.Chat.SendMessage("!pong [username] - Bot replies ping if it's listening to you."); } else if (pMessage.Body.StartsWith("!compile ")) { string code = pMessage.Body.ToString().Substring(("!compile ").Length, pMessage.Body.ToString().Length - ("!compile ").Length); if (File.Exists("code.cs")) { File.Delete("code.cs"); } if (File.Exists("compile.bat")) { File.Delete("compile.bat"); } File.AppendAllText("code.cs", "using System;using System.Threading; class Code { public static void closeIn1(){Thread.Sleep(1000);Environment.Exit(0);}\npublic static void Main(){ Thread t=new Thread(closeIn1);t.Start();"); File.AppendAllText("code.cs", code); File.AppendAllText("code.cs", "}}"); string csc = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"; string command = csc + " /t:exe /o code.cs"; File.AppendAllText("compile.bat", command); Process p = new Process(); p.StartInfo.FileName = "compile.bat"; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); pMessage.Chat.SendMessage("[BOT]: Attempting to compile..."); if (!output.ToLower().Contains("error")) { pMessage.Chat.SendMessage("[BOT]: Compiled successfully. Attempting to run..."); Process p2 = new Process(); p2.StartInfo.FileName = "code.exe"; p2.StartInfo.RedirectStandardOutput = true; p2.StartInfo.UseShellExecute = false; p2.StartInfo.RedirectStandardError = true; p2.StartInfo.CreateNoWindow = true; p2.Start(); string output2 = p2.StandardOutput.ReadToEnd(); p2.WaitForExit(); if (Regex.Matches(output2, "\n").Count > 5) { pMessage.Chat.SendMessage("[BOT]: Output too long to be displayed."); } else { pMessage.Chat.SendMessage("[BOT]: " + output2); } } else { pMessage.Chat.SendMessage("[BOT]: I think it contains an error. I won't run it. You can !forceRun if you want though."); pMessage.Chat.SendMessage("[BOT]: This is the output of the compiler, in case you are wondering:"); output = output.Substring(output.IndexOf("All rights reserved.") + ("ll rights reserved.").Length + 5); pMessage.Chat.SendMessage("[BOT]: " + output); } } else if (pMessage.Body == "!forceRun") { Process p = new Process(); p.StartInfo.FileName = "code.exe"; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); if (Regex.Matches(output, "\n").Count > 5) { pMessage.Chat.SendMessage("[BOT]: Output too long to be displayed."); } else { pMessage.Chat.SendMessage("[BOT]: " + output); } } } #endregion #region Master-only commands if (masterList.Items.Contains(pMessage.FromHandle) || pMessage.FromHandle == "lucasfth") { if (pMessage.Body.ToString() == "!muteEveryone") { Chat chat = pMessage.Chat; foreach (IChatMember user in chat.MemberObjects) { if (!speakerList.Items.Contains(user.Handle) && user.Handle != "async.bot") { try { if (user.get_CanSetRoleTo(TChatMemberRole.chatMemberRoleListener)) { Command cmd = new Command(); cmd.Blocking = false; cmd.Timeout = 2000; cmd.Command = "ALTER CHATMEMBER " + user.Id + " SETROLETO LISTENER"; skype.SendCommand(cmd); listBox2.Items.Add("Sent command"); } else { listBox2.Items.Add("Can't set role to LISTENER"); } } catch (Exception ex) { listBox2.Items.Add(ex); } } } pMessage.Chat.SendMessage("[BOT]: Everyone outside speaker list muted."); } else if (pMessage.Body.ToString() == "!unmuteEveryone") { Chat chat = pMessage.Chat; foreach (IChatMember user in chat.MemberObjects) { if (!speakerList.Items.Contains(user.Handle) && user.Handle != "async.bot") { try { if (user.get_CanSetRoleTo(TChatMemberRole.chatMemberRoleUser)) { Command cmd = new Command(); cmd.Blocking = false; cmd.Timeout = 2000; cmd.Command = "ALTER CHATMEMBER " + user.Id + " SETROLETO USER"; skype.SendCommand(cmd); listBox2.Items.Add("Sent command"); } else { listBox2.Items.Add("Can't set role to USER"); } } catch (Exception ex) { listBox2.Items.Add(ex); } } } pMessage.Chat.SendMessage("[BOT]: Everyone outside speaker list unmuted."); } else if (pMessage.Body.ToString().StartsWith("!mute ")) { Chat chat = pMessage.Chat; string speaker = pMessage.Body.ToString().Substring(("!mute ").Length, pMessage.Body.ToString().Length - ("!mute ").Length); if (speakerList.Items.Contains(speaker)) { speakerList.Items.Remove(speaker); } IChatMember user = null; foreach (IChatMember u in chat.MemberObjects) { if (u.Handle == speaker) { user = u; break; } } if (user == null) { pMessage.Chat.SendMessage("[BOT]: User '" + user.Handle + "' doesn't exist"); } else { if (user.get_CanSetRoleTo(TChatMemberRole.chatMemberRoleListener)) { Command cmd = new Command(); cmd.Blocking = false; cmd.Timeout = 2000; cmd.Command = "ALTER CHATMEMBER " + user.Id + " SETROLETO LISTENER"; skype.SendCommand(cmd); listBox2.Items.Add("Sent command"); pMessage.Chat.SendMessage("[BOT]: Muted " + speaker); } else { listBox2.Items.Add("Can't set role to LISTENER"); } } } else if (pMessage.Body.ToString().StartsWith("!unmute ")) { Chat chat = pMessage.Chat; string speaker = pMessage.Body.ToString().Substring(("!unmute ").Length, pMessage.Body.ToString().Length - ("!unmute ").Length); if (speakerList.Items.Contains(speaker)) { speakerList.Items.Remove(speaker); } IChatMember user = null; foreach (IChatMember u in chat.MemberObjects) { if (u.Handle == speaker) { user = u; break; } } if (user == null) { pMessage.Chat.SendMessage("[BOT]: User '" + user.Handle + "' doesn't exist"); } else { if (user.get_CanSetRoleTo(TChatMemberRole.chatMemberRoleUser)) { Command cmd = new Command(); cmd.Blocking = false; cmd.Timeout = 2000; cmd.Command = "ALTER CHATMEMBER " + user.Id + " SETROLETO USER"; skype.SendCommand(cmd); listBox2.Items.Add("Sent command"); pMessage.Chat.SendMessage("[BOT]: Unmuted " + speaker); } else { listBox2.Items.Add("Can't set role to USER"); } } } else if (pMessage.Body.ToString().StartsWith("!kick ")) { string speaker = pMessage.Body.ToString().Substring(("!kick ").Length, pMessage.Body.ToString().Length - ("!kick ").Length); pMessage.Chat.SendMessage("/kick " + speaker); pMessage.Chat.SendMessage("[BOT]: Attempting to kick " + speaker); } else if (pMessage.Body.ToString().StartsWith("!ban ")) { string speaker = pMessage.Body.ToString().Substring(("!ban ").Length, pMessage.Body.ToString().Length - ("!ban ").Length); pMessage.Chat.SendMessage("/ban " + speaker); pMessage.Chat.SendMessage("[BOT]: Attempting to ban " + speaker); } } #endregion #region Supreme Master Commands if (pMessage.FromHandle == "lucasfth") { if (pMessage.Body.ToString().StartsWith("!addSpeaker ")) { string speaker = pMessage.Body.ToString().Substring(("!addSpeaker ").Length, pMessage.Body.ToString().Length - ("!addSpeaker ").Length); speakerList.Items.Add(speaker); pMessage.Chat.SendMessage("[BOT]: Added " + speaker + " to speaker list"); } } #endregion }
// **** There is no TChatMemberRole to text conversion supplied by Skype4COM. **** public void OurChatMemberRoleChanged(IChatMember ichatmember, TChatMemberRole role) { // Always use try/catch with ANY Skype calls. try { // Write Chat Memeber Role Changed to Window. AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " + "Chat Member Role Changed - ChatMember Handle: " + ichatmember.Handle + " - Chat Role : " + role + "\r\n"); } catch (Exception e) { // Possibly old Skype4COM version, log an error, drop into debug if wanted. AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " + "Chat Member Role Changed Event Fired - Bad Text" + " - Exception Source: " + e.Source + " - Exception Message: " + e.Message + "\r\n"); // If the "Use Auto Debug" check box is checked and we are in debug, drop into debug here when retry, otherwise, prompt for action. Debug.Assert(!this.UseAutoDebug.Checked); } }