In your first code, the if statement is irrelevant, since you specify the channel in the ON JOIN event. Aside from that, I see nothing wrong with that section of the code, however, here's the re-write
on !*:join:#mychannel:{
notice $nick Welcome to $chan $+ . I'm the channels bot. For our latest deals type !deals. To get me to idle in your channel type !idle #yourchannel
}
Regarding #2, you just need to specify the full channel name in the ON TEXT event, rather than using # (which will match whatever channel the bot is on). You already specify the specific channel in the ON JOIN event (reference question #1)
A recommendation for an altered code reads as follows
on *:text:!idle*:#mychan:{
if !$2 { .msg $nick You have to specify a channel }
elseif $2 ischan { .msg $nick I'm already in $2 }
else {
set %chan $2
join $2
}
}
on me:*:join:%chan:{
msg $chan,#mychan I'm now idling in $chan
}
Regarding query #3, try this instead
on *:TEXT:!broadcast *:#:{
if ($nick isop $chan) {
amsg $+(<,$nick,>) $2- <#mychan>
}
}