Changeset 7548
- Timestamp:
- 03/06/08 13:49:52 (5 years ago)
- Location:
- lang/perl/Skype4IRC/trunk/lib/Skype4IRC
- Files:
-
- 2 modified
-
IRCD.pm (modified) (3 diffs)
-
SkypeBridge.pm (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Skype4IRC/trunk/lib/Skype4IRC/IRCD.pm
r2095 r7548 15 15 object_states => [ 16 16 $self => { 17 map( { $_ => "poe_$_" } qw/_start _default update_contact privmsg / ),17 map( { $_ => "poe_$_" } qw/_start _default update_contact privmsg groupmsg/ ), 18 18 }, 19 $self => [qw/ircd_daemon_nick ircd_daemon_privmsg /],19 $self => [qw/ircd_daemon_nick ircd_daemon_privmsg ircd_daemon_public/], 20 20 ], 21 21 ); … … 55 55 } 56 56 57 sub poe_groupmsg { 58 my ($self, $kernel, $nick, $data) = @_[OBJECT, KERNEL, ARG0, ARG1]; 59 60 $self->ircd->_daemon_cmd_join( $self->{nick}, $data->{channel} ); 61 for my $member (@{ $data->{members} }) { 62 next if $member eq $self->{nick}; 63 64 $kernel->call( update_contact => [[$member, $member]] ); 65 $self->ircd->yield( daemon_cmd_join => $member => $data->{channel} ); 66 } 67 68 $self->ircd->yield( daemon_cmd_privmsg => $nick => $data->{channel} => $data->{message} ); 69 } 70 57 71 sub ircd_daemon_privmsg { 58 72 my ($self, $kernel, $who, $target, $what) = @_[OBJECT, KERNEL, ARG0..ARG2]; … … 60 74 my $message = decode('utf-8', $what); 61 75 $kernel->post( skype => send_message => $target => $message ); 76 } 77 78 sub ircd_daemon_public { 79 my ($self, $kernel, $who, $channel, $what) = @_[OBJECT, KERNEL, ARG0..$#_]; 80 81 my $message = decode('utf-8', $what); 82 $kernel->post( skype => send_group_message => $channel => $message ); 62 83 } 63 84 -
lang/perl/Skype4IRC/trunk/lib/Skype4IRC/SkypeBridge.pm
r7547 r7548 24 24 object_states => [ 25 25 $self => { 26 map { $_ => "poe_$_" } qw/_start attach send_message /26 map { $_ => "poe_$_" } qw/_start attach send_message send_group_message/ 27 27 }, 28 28 ], … … 52 52 53 53 $self->skype->SendMessage($target, encode('cp932', $message)); 54 } 55 56 sub poe_send_group_message { 57 my ($self, $kernel, $channel, $message) = @_[OBJECT, KERNEL, ARG0, ARG1]; 58 59 my $target; 60 forEach { $target = $_ if $channel eq $_->Name } $self->skype->Chats; 61 return unless $target; 62 63 $target->SendMessage( encode('cp932', $message) ); 54 64 } 55 65 … … 90 100 warn $message->FromHandle . ' said: ' . $message->Body; 91 101 92 if ($message->Chat->Type == 0) { # 1:1 102 my $chat_type = $message->Chat->Type; 103 if ($chat_type == 0) { # 1:1 93 104 $kernel->post( ircd => privmsg => $message->FromHandle => decode('cp932', $message->Body) ); 94 105 } 95 else { 96 # TODO: group chat 106 elsif ($chat_type == 3) { # group chat 107 my @members; 108 forEach { push @members, $_->Handle } $message->Chat->Members; 109 110 $kernel->post( ircd => groupmsg => $message->FromHandle, { 111 members => \@members, 112 message => decode('cp932', $message->Body), 113 channel => decode('cp932', $message->Chat->Name), 114 topic => decode('cp932', $message->Chat->Topic || $message->Chat->FriendlyName), 115 } ); 97 116 } 98 117 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)