--- irssi-0.8.12/src/irc/core/irc.c +++ patch/src/irc/core/irc.c @@ -283,6 +283,7 @@ const char *signal; char *event, *args; char *params, *target, *recoded_line, *recoded_nick; + char isChannel=0; g_return_if_fail(line != NULL); @@ -290,11 +291,17 @@ recoded_nick = recode_in(SERVER(server), nick, NULL); if (ischannel(*args) || (*args++ == '@' && ischannel(*args))) + { target = args; + isChannel=1; + } else { target = recoded_nick; } - recoded_line = recode_in(SERVER(server), line, target); + if(isChannel == 0) + recoded_line = recode_in(SERVER(server), line, target); + else + recoded_line=g_strdup(line); /* split event / args */ event = g_strconcat("event ", recoded_line, NULL); args = strchr(event+6, ' ');