You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

274 lines
7.2 KiB

##
## ~/.irc/openpkg -- ircII run-commands for OpenPKG settings
## Copyright (c) 2005-2018 Ralf S. Engelschall <rse@engelschall.com>
##
# Banner
^set display off
echo *** Loading ircII configuration: openpkg (OpenPKG)
# Convenience Ratbox Services Login
# Usage: /login [[[<nickname>] <username>] <password>]
alias login {
# determine command line arguments
if ([$2] != [] && [$3] == []) {
^assign login.nickname $0
^assign login.username $1
^assign login.password $2
}
if ([$1] != [] && [$2] == []) {
^assign login.username $0
^assign login.password $1
}
if ([$0] != [] && [$1] == []) {
^assign login.password $0
}
# optionally determine nickname
if ([$login.nickname] == []) {
^assign login.nickname $IRC_LOGIN_NICKNAME
if ([$login.nickname] == []) {
^assign login.nickname $IRCNICK
if ([$login.nickname] == []) {
^assign login.nickname $N
}
}
}
if ([$login.nickname] == []) {
echo *** login:ERROR: IRC authentication nickname not known
echo *** login:ERROR: (set shell $IRC_LOGIN_NICKNAME, shell $IRCNICK, ircII $login.nickname or use /nick)
}
# optionally determine username
if ([$login.username] == []) {
^assign login.username $IRC_LOGIN_USERNAME
if ([$login.username] == []) {
^assign login.username $IRCUSER
if ([$login.username] == []) {
^assign login.username $login.nickname
}
}
}
if ([$login.username] == []) {
echo *** login:ERROR: IRC authentication username not known
echo *** login:ERROR: (set shell $IRC_LOGIN_USERNAME, shell $IRCUSER, or ircII $login.username)
}
# optionally determine password
if ([$login.password] == []) {
^assign login.password $IRC_LOGIN_PASSWORD
if ([$login.password] == []) {
^assign login.password $IRCPASS
}
}
if ([$login.password] == []) {
echo *** login:ERROR: IRC authentication password not known
echo *** login:ERROR: (set shell $IRC_LOGIN_PASSWORD, shell $IRCPASS, or ircII $login.password)
}
if ([$login.nickname] == [] || [$login.username] == [] || [$login.password] == []) {
echo *** login:ERROR: Unable to authenticate you because of missing information.
__login_cleanup
}{
__login_step1
}
}
alias __login_step1 {
# communicating to UserServ
if ([$login.nickname] == [$login.username]) {
echo *** login: authenticating to UserServ with username ${login.username}
}
^msg USERSERV login $login.username $login.password
if ([$N] != [$login.nickname]) {
timer 2 __login_step2
}{
__login_cleanup
}
}
alias __login_step2 {
# communicating to NickServ
echo *** login: requesting to NickServ the regaining of nickname ${login.nickname}
^msg NICKSERV regain $login.nickname
timer 2 __login_step3
}
alias __login_step3 {
# communicating to IRC
echo *** login: resurrecting nickname ${login.nickname}
nick $login.nickname
timer 2 nick
__login_cleanup
}
alias __login_cleanup {
^assign -login.nickname
^assign -login.username
^assign -login.password
}
# Flexible Channel Joining
# Usage: /join [<channel>]
alias join {
^assign alias.join.channel $0
^on -473 "*Cannot join channel*+i*" {
msg CHANSERV invite $alias.join.channel
timer 2 __join_repeat
}
//join $alias.join.channel
timer 4 __join_cleanup
}
alias __join_repeat {
^on -473 -"*Cannot join channel*+i*"
//^join $alias.join.channel
}
alias __join_cleanup {
^assign -alias.join.channel
^on -473 -"*Cannot join channel*+i*"
}
# Convenience Operator Privilege Regaining
# Usage: /opme
alias opme {
msg CHANSERV op $C
}
# Convenience Voice Management
# (for moderated channels)
# Usage: /voice [[+]|- <nickname> ...]
alias __voice_display {
# display the nicks which have voice
@ output = []
@ nicks = chanusers($C)
@ i = 0
while (i < [$#nicks]) {
@ nick = [$word($i $nicks)]
@ type = hasvoice($nick $C)
if ([$type] == [1]) {
if ([$output] == []) {
^assign output ${nick}
}{
^assign output $output, ${nick}
}
}
@ i = i + 1
^assign -nick
}
if ([$output] == []) {
echo +++ Voices: -none-
}{
echo +++ Voices: $output
}
^assign -i
^assign -nicks
^assign -output
}
alias __voice_change {
# grant/take voice from nick(s)
@ args = [$*]
^assign op +
@ i = 0
while (i < [$#args]) {
@ arg = [$word($i $args)]
if (left(1 $arg) == [-] || left(1 $arg) == [+]) {
^assign op $left(1 $arg)
^assign arg $strip([+-] $arg)
}
if ([$arg] == [*]) {
@ nicks = chanusers($C)
}{
@ nicks = [$arg]
}
@ j = 0
while (j < [$#nicks]) {
@ nick = [$word($j $nicks)]
@ type = hasvoice($nick $C)
if ([$op] == [+]) {
if ([$type] == [0]) {
echo +++ Voice granted to ${nick}
mode $C +v $nick
}
}{
if ([$type] == [1]) {
echo +++ Voice taken from ${nick}
mode $C -v $nick
}
}
@ j = j + 1
}
@ i = i + 1
}
^assign -i
^assign -j
^assign -op
^assign -type
^assign -nick
^assign -nicks
^assign -arg
^assign -args
}
alias voice {
if ([$C] == [0]) {
echo +++ voice:ERROR: you are still not on a channel!
}{
if ([$*] != []) {
__voice_change $*
timer 2 __voice_display
}{
__voice_display
}
}
}
# Convenience All-In-One Session Setup
alias session {
clear
echo ::: session: preparing main window
window name main
echo ::: session: logging in
login
echo ::: session: spawning other windows
timer 2 __session_step2
timer 8 __session_step3
timer 14 __session_step4
}
alias __session_step2 {
window new name foundation
window refnum foundation
clear
echo ::: session: preparing foundation window
timer 1 join \#foundation
}
alias __session_step3 {
window new name community
window refnum community
clear
echo ::: session: preparing community window
timer 1 join \#community
}
alias __session_step4 {
window refnum main
window balance
echo ::: session: established.
^msg STEWARD who
}
# Shorthands for Services Communication
alias gl msg global $0-
alias al msg alis $0-
alias ns msg nickserv $0-
alias us msg userserv $0-
alias cs msg chanserv $0-
alias os msg operserv $0-
alias ob msg operbot $0-
alias js msg jupeserv $0-
# Shorthands for Bot Communication
alias se msg secretary $0-
alias st msg steward $0-
alias vo msg voter $0-
# Additional Shorthands
alias last msg secretary log $C last $*
alias match msg secretary log $C match $*
# End of Configuration
^set display on