To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

Timestamps and Template:Providers/table: Difference between pages

From ZNC
(Difference between pages)
Jump to navigation Jump to search
>Gry
→‎WeeChat: new section
 
m updated connectivity, name, URL, and IRC support links for QZ -> TechnoFAQZNC
 
Line 1: Line 1:
== Usage ==
<noinclude>
If you want real timestamps you should use these settings for your user:
<!--
 
======================================================================
TimestampFormat = [%H:%M:%S]
For location codes, please refer to https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
AppendTimestamp = false
Use exceptions, most notably UK instead of GB, listed here https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Exceptional_reservations
PrependTimestamp = true
======================================================================
 
Providers are sorted by "Date Started", which is either the date in which the provider officially started delivering services, the date
It currently supports Channel, Query, Wallops, Notice and Servernotices
their domain was registered (if reliable information), or the date added to the ZNC table list.
 
-->
== Format ==
</noinclude>[<span class="plain links">[{{fullurl:Template:Providers/table|action=edit}} Edit data]</span>]
 
{| class="wikitable sortable" border="1"
strftime arguments can be used for the timestamps, more details and arguments can be found at opengroup.org[http://opengroup.org/onlinepubs/007908799/xsh/strftime.html].
! rowspan="2" | Provider
 
! colspan="2" | Max Networks per User
  %a the locale's abbreviated weekday name.
! rowspan="2" | ZNC Version
  %A - the locale's full weekday name.
! rowspan="2" | Language
  %b - the locale's abbreviated month name.
! rowspan="2" | Connectivity<br><small style="font-weight:normal">(to destination networks)</small>
  %B - the locale's full month name.  
! rowspan="2" class="unsortable" | IRC Support
  %c - the locale's appropriate date and time representation.  
! rowspan="2" | Date Started
  %C - the century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99].
! rowspan="2" class="unsortable" | ZNC locations<br><small style="font-weight:normal">([[wikipedia:ISO 3166-1 alpha-2#Officially_assigned_code_elements|country codes]], using [[wikipedia:ISO 3166-1 alpha-2#Exceptional_reservations|exceptions]])</small>
  %d - the day of the month as a decimal number [01,31].  
! rowspan="2" class="unsortable" | Notes
  %D - same as %m/%d/%y.
|-
  %e - the day of the month as a decimal number [1,31]; a single digit is preceded by a space.
! Default
  %h - same as %b.
! Premium
  %H - the hour (24-hour clock) as a decimal number [00,23].
|-
  %I - the hour (12-hour clock) as a decimal number [01,12].
|-
  %j - the day of the year as a decimal number [001,366].
|[https://bnc4free.com BNC4FREE]
  %m - the month as a decimal number [01,12].
| 3
  %M - the minute as a decimal number [00,59].
|
  %n - a newline character.
| 1.8.1*
  %p - the locale's equivalent of either a.m. or p.m.
| English
  %r - the time in a.m. and p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p.
| both
  %R - the time in 24 hour notation (%H:%M).
| {{irc|chat.freenode.net|bnc4free}}
  %S - the second as a decimal number [00,61].  
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2009-01-05
  %t - a tab character.
| <abbr title="United Kingdom">UK</abbr>
  %T - the time (%H:%M:%S).
|
  %u - the weekday as a decimal number [1,7], with 1 representing Monday.
|-
  %U - the week number of the year (Sunday as the first day of the week) as a decimal number [00,53].
|[https://www.xshellz.com xShellz]
  %V - the week number of the year (Monday as the first day of the week) as a decimal number [01,53]. If the week containing 1 January has four or more
| 2
      days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1.
| data-sort-value="30" | 12, 20, or 30
  %w - the weekday as a decimal number [0,6], with 0 representing Sunday.
| 1.6.1
  %W - the week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday
| English
      are considered to be in week 0.
| both
  %x - the locale's appropriate date representation.
| {{irc|chat.freenode.net|xShellz}}
  %X - the locale's appropriate time representation.
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2009-03-01
  %y - the year without century as a decimal number [00,99].
| <abbr title="United States of America">US</abbr>, <abbr title="United Kingdom">UK</abbr>
  %Y - the year with century as a decimal number.
|
  %Z - the timezone name or abbreviation, or by no bytes if no timezone information exists.
|-
  %% - %.
|[https://lunarbnc.net LunarBNC]
 
| unlimited
== Scripts ==
|
=== KVIrc ===
| 1.8.0*
This script '''requires''' these settings for your user:
| English
 
| IPv6 <small>(IPv4 requires Premium)</small>
TimestampFormat = {%H:%M:%S}
| {{irc|irc.lunarirc.net|lunarbnc}}
AppendTimestamp = false
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2014-09-03
PrependTimestamp = true
| <abbr title="Germany">DE</abbr>
 
|
and here is it:
|-
 
|[https://znc.bg ZNC.BG]
event(OnWallops,zncid)
| 1
{
|
| 1.6.3*
%timefront = $str.lefttofirst($3,$char(32))
| English
%timeappend = $str.rightfromlast($3,$char(32))
| both
| {{irc|irc.v.bg|znc}}
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2016-01-25
| <abbr title="Bulgaria">BG</abbr>, <abbr title="Czech Republic">CZ</abbr>, <abbr title="Germany">DE</abbr>, <abbr title="Italy">IT</abbr>
if($str.matchnocase(\{**\:**\:**\},%timefront))
|
{
|-
%time = %timefront
|[https://technofaq.org TechnoFAQZNC]
%msg = $str.rightfromfirst($3,\})
| 3 (more upon request)
#echo %timefront front
| 10 (more upon request)
} else {
| 1.8.1
if($str.matchnocase(\{**\:**\:**\},%timeappend))
| English
{
| IPv6 <small>(IPv4 requires Premium)</small>
%time = %timeappend
| {{irc|chat.freenode.net|TechnoFAQZNC}}
%msg = $str.lefttofirst($3,\{)
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2017-11-02
#echo %timeappend append
| <abbr title="France">FR</abbr>, <abbr title="Norway">NO</abbr>
}
|
}
|-
|[https://pastebin.com/raw/eDaeLZhn bnc4you]
| 4 (freenode + 3 choices)
if($str.matchnocase(\{**\:**\:**\},%time))
|
{
| 1.8.1
echo -n -i=$msgtype(Wallops) $k($option(uinttimestampforeground))%time$k WALLOPS von $0 \[$1\@$2\] $str.rightfromfirst($3,\})
| English
}
| IPv4-only
halt
| {{irc|chat.freenode.net|#bnc4you}}
}
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2018-03-03
| <abbr title="Turkey">TR</abbr>
|
event(OnServerNotice,zncid)
|-
{
|[https://ircnow.org IRCNow]
%chan = $window.list(channel,$ic)
| 100 (more upon request)
%con = $window.list(console,$ic)
|
%x = 0
| 1.7.4
while(%x < %chan[]#)
| English / Chinese / Urdu / Tamil / Spanish
{
| both
if($window.hasUserFocus(%chan[%x]))
| {{irc|irc.ircnow.org|ircnow}}
{
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2019-08-26
%outchan = %con
| <abbr title="Luxembourg">LU</abbr>, <abbr title="United States of America">US</abbr>
#echo -w=%outchan $0 $3 %outchan
| <small>hostile to LGBT</small>
break;
|-
} else {
|[https://pastebin.com/raw/tqTixMFS QualityZNC]
%outchan = %con
| 2 (freenode + 1 choice)
}
|
if(%x < %chan[]#)
| 1.8.0
{
| English
%x = $(%x + 1)
| both
} else {
| {{irc|chat.freenode.net|#QualityZNC}}
break;
| <span style="display:none">&{{#expr:3e11+{{#time:U|..}}}}</span>2020-02-09
}
| <abbr title="Germany">DE</abbr>
}
|
%timefront = $str.lefttofirst($1,$char(32))
|}
%timeappend = $str.rightfromlast($1,$char(32))
if($str.matchnocase(\{**\:**\:**\},%timefront))
{
%time = %timefront
%msg = $str.rightfromfirst($1,\})
#echo %timefront front
} else {
if($str.matchnocase(\{**\:**\:**\},%timeappend))
{
%time = %timeappend
%msg = $str.lefttofirst($1,\{)
#echo %timeappend append
}
}
if($str.matchnocase(\{**\:**\:**\},%time))
{
echo -n  -w=%con -i=$msgtype(ServerNotice) $k($option(uinttimestampforeground))%time$k [$0] $str.rightfromfirst($1,\})
halt
}
}
event(OnQueryNotice,zncid)
{
%chan = $window.list(channel,$ic)
%con = $window.list(console,$ic)
%x = 0
while(%x < %chan[]#)
{
if($window.hasUserFocus(%chan[%x]))
{
%outchan = %chan[%x]
#echo -w=%outchan $0 $3 %outchan
break;
} else {
%outchan = %con
}
if(%x < %chan[]#)
{
%x = $(%x + 1)
} else {
break;
}
}
%timefront = $str.lefttofirst($3,$char(32))
%timeappend = $str.rightfromlast($3,$char(32))
if($str.matchnocase(\{**\:**\:**\},%timefront))
{
%time = %timefront
%msg = $str.rightfromfirst($3,\})
#echo %timefront front
} else {
if($str.matchnocase(\{**\:**\:**\},%timeappend))
{
%time = %timeappend
%msg = $str.lefttofirst($3,\{)
#echo %timeappend append
}
}
if($str.matchnocase(\{**\:**\:**\},%time))
{
echo -n  -w=%outchan -i=$msgtype(QueryNotice) $k($option(uinttimestampforeground))%time$k *$0* $str.rightfromfirst($3,\})
halt
}
}
event(OnQueryMessage,zncid)
{
%timefront = $str.lefttofirst($3,$char(32))
%timeappend = $str.rightfromlast($3,$char(32))
if($str.matchnocase(\{**\:**\:**\},%timefront))
{
%time = %timefront
%msg = $str.rightfromfirst($3,\})
#echo %timefront front
} else {
if($str.matchnocase(\{**\:**\:**\},%timeappend))
{
%time = %timeappend
%msg = $str.lefttofirst($3,\{)
#echo %timeappend append
}
}
if($str.matchnocase(\{**\:**\:**\},%time))
{
echo -n -i=$msgtype(ChannelPrivateMessage) $k($option(uinttimestampforeground))%time$k $option(stringextendedprivmsgprefix)%status$0$option(stringextendedprivmsgpostfix)%msg
halt
}
}
event(OnChannelMessage,zncid)
{
if(%Win{$window} > 0)
{
%timefront = $str.lefttofirst($3,$char(32))
%timeappend = $str.rightfromlast($3,$char(32))
if(($option(boolshowchanneluserflaginprivmsgview)) && ($chan.ison($0)) && ($chan.isvoice($0)))%status = $chan.getflag($0)
if($str.matchnocase(\{**\:**\:**\},%timefront))
{
%time = %timefront
%msg = $str.rightfromfirst($3,\})
#echo %timefront front
} else {
if($str.matchnocase(\{**\:**\:**\},%timeappend))
{
%time = %timeappend
%msg = $str.lefttofirst($3,\{)
#echo %timeappend append
}
}
if($str.matchnocase(\{**\:**\:**\},%time))
{
                if($str.containsnocase(%msg,$me))
                          {
          echo -n -i=$msgtype(Highlight) $k($option(uinttimestampforeground))%time$k $option(stringextendedprivmsgprefix)%status$0$option(stringextendedprivmsgpostfix) %msg
          halt
                          }else{
                          echo -n -i=$msgtype(ChannelPrivateMessage) $k($option(uinttimestampforeground))%time$k $option(stringextendedprivmsgprefix)%status$0$option(stringextendedprivmsgpostfix) %msg
          halt
                          }
}
}
if($0 == "***")
{
if($3 == "Buffer Playback...")
{
%Win{$window} = 1
}
if($3 == "Playback Complete.")
{
%Win{$window} = 0
}
}
}
event(OnAction,zncid)
{
if(%Win{$window}  > 0)
{
%timefront = $str.lefttofirst($4,$char(32))
%timeappend = $str.rightfromlast($4,$char(32))
if($str.matchnocase(\{**\:**\:**\},%timefront))
{
%time = %timefront
%msg = $str.rightfromfirst($4,\})
#echo %timefront front
} else {
if($str.matchnocase(\{**\:**\:**\},%timeappend))
{
%time = %timeappend
%msg = $str.lefttofirst($4,\{)
#echo %timeappend append
}
}
if($chan.ison($0))%status = $chan.getflag($0)
if($str.matchnocase(\{**\:**\:**\},%time))
{
#%time = $date([H:M:S])
echo -n -i=$msgtype(Action) $k($option(uinttimestampforeground))%time$k $0 %msg
#echo $0 $3
halt
}
}
}
 
=== mIRC ===
This script '''requires''' these settings for your user:
 
TimestampFormat = [%H:%M:%S]
AppendTimestamp = false
PrependTimestamp = true
 
Otherwise you have to adjust the regex pattern in the script that grabs the timestamp.
 
It handles
* Channel messages
* Savebuff output
* Channel notices
* Channel actions
 
==== Configuration (optional) ====
If lines are too long to fit the window width they are wrapped so that the wrapped lines will line up after the nick. To disable that behavior, set <tt>%INDENT_LINES</tt> to <tt>$false</tt>.
 
Nicks will be prefixed with their mode identifier (so "nick" becomes "@nick" for example). To disable this behavior, set <tt>%PREFIX_NICKS</tt> to <tt>$false</tt>.
 
The beginning and end of buffer playback are marked with the default line separator by default. This can be changed to <tt>NORMAL</tt> to display the usual <tt>*** Buffer Playback.</tt> and <tt>*** Playback Complete</tt> messages or to <tt>NONE</tt> to not show any status message at all.
 
If you run into problems like all messages being displayed twice because of other <tt>ON TEXT</tt> processing scripts, try to set <tt>%EXTERNAL_RENDERER</tt> to <tt>$false</tt>.
 
The script also allows the use of spaces.dll to preserve consecutive spaces. To enable it just put <tt>spaces.dll</tt> (http://www.xise.nl/mirc/) into your <tt>Application Data</tt> folder and set <tt>%USE_SPACES_DLL</tt> to <tt>$true</tt>.
 
==== Script ====
Information about loading mIRC scripts can be found [http://chanops.org/faqs/clients/how-to-load-an-mirc-script-into-your-main-mirc-program.html here].
alias -l config {
  ; Mandatory settings
  var %TIMESTAMP_PATTERN = ^\[(\d\d:\d\d:\d\d)\].*$
  var %PLAYBACK_BEGIN    = Buffer Playback...
  var %PLAYBACK_END      = Playback Complete.
  var %VARIABLE_PREFIX  = gbuffer
  ; Optional settings
  ; Indent wrapped lines
  var %INDENT_LINES = $true
  ; Add the mode prefix to the nick (if possible)
  var %PREFIX_NICKS = $true
  ; Are there other ON TEXT processors in place?
  var %EXTERNAL_RENDERER = $false
  ; Possible values are NORMAL/LINESEP/NONE
  var %STATUS_DISPLAY = LINESEP
  ; Make use of space-preserving spaces.dll
  var %USE_SPACES_DLL = $true
  return $eval( $+( %, $1 ), 2 )
}
alias -l makeNick {
  var %nick = $nick( $1, $2 ).pnick
  if ( ( 0 == $len( %nick ) ) || ( $true != $config( PREFIX_NICKS ) ) ) %nick = $2
  return %nick
}
alias -l handleMessage {
  var %chan = $1
  var %nick = $2
  var %color = $3
  var %pattern = $4
  var %text = $5
  var %pnick = $makeNick( %chan, %nick )
  ; Buffered input
  if ( $true == $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., %chan, ., playback ), 2 ) ) {
    noop $regex( %text, $config( TIMESTAMP_PATTERN ) ) )
    var %timestamp = $regml( 1 )
    var %params
    if ( $config( INDENT_LINES ) ) %params = $+( i, $calc( $len( %timestamp ) + $len( %pnick ) + 4 ) )
    if ( %nick != $me ) %params = $+( %params, lmr )
    if ( 0 != $len( %params ) ) %params = $+( -, %params )
    if ( %nick == $me ) {
      if ( $true == $config( USE_SPACES_DLL ) ) {
        var %result
        noop $regex( %text, ^.*? (.*)$ )
        noop $regsub( %pattern, &TEXT&, $regml( 1 ), %result )
        noop $regsub( %result , &NICK&, %pnick, %result )
        noop $dll( spaces.dll, echo, $color( own  ) %params $chan %timestamp %result )
      }
      else {
        echo $color( own ) %params $chan %timestamp $replacecs( %pattern, &NICK&, %pnick, &TEXT&, $gettok( %text, 2-, 32 ) )
      }
    }
    else {
      if ( $true == $config( USE_SPACES_DLL ) ) {
        var %result
        noop $regex( %text, ^.*? (.*)$ )
        noop $regsub( $regml( 1 ), /\\/g, \\\\, %result )
        noop $regsub( %pattern, &TEXT&, %result, %result )
        noop $regsub( %result , &NICK&, %pnick, %result )
        noop $dll( spaces.dll, echo, $color( %color ) %params $chan %timestamp %result )
      }
      else {
        echo $color( %color ) %params $chan %timestamp $replacecs( %pattern, &NICK&, %pnick, &TEXT&, $gettok( %text, 2-, 32 ) )
      }
    }
  }
  else {
    ; Current events (optional)
    if ( $true == $config( EXTERNAL_RENDERER ) ) return $false
    if ( $true == $config( USE_SPACES_DLL ) ) {
      var %result
      noop $regsub( %pattern, &NICK&, %pnick, %result )
      noop $regsub( %text, /\\/g, \\\\, %text )
      noop $regsub( %result, &TEXT&, %text, %result )
      noop $dll( spaces.dll, echo, $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 5 ), lmrt ) $chan %result )
    }
    else {
      echo $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 4 ), lmrt ) $chan $replacecs( %pattern, &NICK&, %pnick, &TEXT&, %text )
    }
  }
  return $true
}
on ^*:text:*:#:{
  ; Handle savebuff output
  if ( $nick == *savebuff ) {
    var %nick = $gettok( $2, 1, $asc( ! ) )
    var %timestamp = $asctime( $1, $timestampfmt )
    if ( $3 == MODE )    echo $color( mode ) $chan %timestamp * %nick sets mode: $4-
    elseif ( $3 == JOIN ) echo $color( join ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has joined $chan
    elseif ( $3 == QUIT ) echo $color( quit ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) Quit ( $+ $4- $+ )
    elseif ( $3 == PART ) echo $color( part ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has left $chan
    elseif ( $3 == NICK ) echo $color( nick ) $chan %timestamp * %nick is now known as $4
    elseif ( $3 == KICK ) echo $color( kick ) $chan %timestamp * $2 was kicked by $gettok( $4, 1, $asc( ! ) ) ( $+ $5- $+ )
    else                  echo $color( erro ) $chan *** UNHANDLED LINE < $+ $1- $+ >
  }
  ; Handle playback state notifications
  elseif ( $nick == *** ) {
    if ( $1- == $config( PLAYBACK_BEGIN ) ) {
      set -e $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ) $true
    }
    elseif ( $1- == $config( PLAYBACK_END ) ) {
      unset $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ), 1 )
    }
    if ( $config( STATUS_DISPLAY ) == NORMAL ) {
      echo $color( notice ) $chan *** $1-
    }
    elseif ( $config( STATUS_DISPLAY ) == LINESEP ) {
      linesep $chan
    }
  }
  ; Handle usual input
  else {
    var %pattern = ^:.*? :(.*)$
    noop $regex( $rawmsg, %pattern )
    if ( $false == $handleMessage( $chan, $nick, normal, <&NICK&> &TEXT&, $regml( 1 ) ) ) return
  }
  halt
}
on ^*:action:*:#:{
  ;noop $dll( spaces.dll, echo, $chan $rawmsg )
  var %pattern = ^:.*? :\x01ACTION (.*)\x01$
  noop $regex( $rawmsg, %pattern )
  if ( $true == $handleMessage( $chan, $nick, action, * &NICK& &TEXT&, $regml( 1 ) ) ) halt
}
on ^*:notice:*:#:{
  ;noop $dll( spaces.dll, echo, $chan $rawmsg )
  var %pattern = ^:.*? :(.*)$
  noop $regex( $rawmsg, %pattern )
  if ( $true == $handleMessage( $chan, $nick, notice, -&NICK&- &TEXT&, $regml( 1 ) ) ) halt
}
 
=== irssi ===
This script '''requires''' these settings for your user:
 
TimestampFormat = [%H:%M:%S]
AppendTimestamp = false
PrependTimestamp = true
 
Otherwise you have to adjust the regex pattern in the script that grabs the timestamp.
 
Download the script from: http://cba.si/stuff/znc_timestamp.pl
 
Put it into ~/.irssi/scripts, then '''/script load znc_timestamp''' .
 
=== WeeChat ===
* [http://www.weechat.org/files/scripts/unofficial/znc-playback.py znc-playback.py]

Revision as of 20:27, 19 July 2020

[Edit data]

Provider Max Networks per User ZNC Version Language Connectivity
(to destination networks)
IRC Support Date Started ZNC locations
(country codes, using exceptions)
Notes
Default Premium
BNC4FREE 3 1.8.1* English both #bnc4free@chat.freenode.net &3017116188372009-01-05 UK
xShellz 2 12, 20, or 30 1.6.1 English both #xShellz@chat.freenode.net &3017116188372009-03-01 US, UK
LunarBNC unlimited 1.8.0* English IPv6 (IPv4 requires Premium) #lunarbnc@irc.lunarirc.net &3017116188372014-09-03 DE
ZNC.BG 1 1.6.3* English both #znc@irc.v.bg &3017116188372016-01-25 BG, CZ, DE, IT
TechnoFAQZNC 3 (more upon request) 10 (more upon request) 1.8.1 English IPv6 (IPv4 requires Premium) #TechnoFAQZNC@chat.freenode.net &3017116188372017-11-02 FR, NO
bnc4you 4 (freenode + 3 choices) 1.8.1 English IPv4-only ##bnc4you@chat.freenode.net &3017116188372018-03-03 TR
IRCNow 100 (more upon request) 1.7.4 English / Chinese / Urdu / Tamil / Spanish both #ircnow@irc.ircnow.org &3017116188372019-08-26 LU, US hostile to LGBT
QualityZNC 2 (freenode + 1 choice) 1.8.0 English both ##QualityZNC@chat.freenode.net &3017116188372020-02-09 DE