Changeset 373 for TwitterIrcGateway/TwitterIrcGatewayCore/Session.cs
- Timestamp:
- 04/15/08 00:23:42 (9 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
TwitterIrcGateway/TwitterIrcGatewayCore/Session.cs
r369 r373 66 66 MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_LIST); 67 67 MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_TIGGC); 68 MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_ TOPIC);68 MessageRecieved += new EventHandler<MessageRecievedEventArgs>(MessageRecieved_MODE); 69 69 70 70 _groups = new Groups(); … … 413 413 SendNumericReply(NumericReply.RPL_ENDOFNAMES, channelName, "End of NAMES list"); 414 414 group.IsJoined = true; 415 416 // mode 417 foreach (ChannelMode mode in group.ChannelModes) 418 { 419 Send(new ModeMessage(channelName, mode.ToString())); 420 } 415 421 416 422 // Set topic of client, if topic was set … … 736 742 foreach (Group group in _groups.Values) 737 743 { 738 if (group.IsJoined && String.Compare(message.Receiver, group.Name, true) != 0)744 if (group.IsJoined && !group.IgnoreEchoBack && String.Compare(message.Receiver, group.Name, true) != 0) 739 745 { 740 746 if (_server.BroadcastUpdateMessageIsNotice) … … 866 872 } 867 873 } 868 874 875 void MessageRecieved_MODE(object sender, MessageRecievedEventArgs e) 876 { 877 if (String.Compare(e.Message.Command, "MODE", true) != 0) return; 878 ModeMessage modeMsg = e.Message as ModeMessage; 879 // チャンネルターゲットのみ 880 if (modeMsg.CommandParams[0].StartsWith("#")) 881 { 882 String channel = modeMsg.CommandParams[0]; 883 String modeArgs = modeMsg.CommandParams[1]; 884 Group group; 885 if (!_groups.TryGetValue(channel, out group)) 886 { 887 SendErrorReply(ErrorReply.ERR_NOSUCHCHANNEL); 888 } 889 890 foreach (ChannelMode mode in ChannelMode.Parse(modeArgs)) 891 { 892 foreach (ChannelMode mode2 in new List<ChannelMode>(group.ChannelModes)) 893 { 894 if (mode2.Mode == mode.Mode && mode2.Parameter == mode.Parameter) 895 { 896 if (mode.IsRemove) 897 { 898 // すでにあって削除 899 group.ChannelModes.Remove(mode2); 900 } 901 else 902 { 903 // すでにある 904 goto NEXT; 905 } 906 } 907 } 908 909 if (!mode.IsRemove) 910 { 911 group.ChannelModes.Add(mode); 912 } 913 SendServer(new ModeMessage(channel, mode.ToString())); 914 SaveGroups(); 915 NEXT: 916 ; 917 } 918 } 919 } 869 920 #endregion 870 921
