summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/mh_sbuserinfo.pl53
1 files changed, 46 insertions, 7 deletions
diff --git a/scripts/mh_sbuserinfo.pl b/scripts/mh_sbuserinfo.pl
index c9ee211..0a8eb9c 100644
--- a/scripts/mh_sbuserinfo.pl
+++ b/scripts/mh_sbuserinfo.pl
@@ -1,8 +1,8 @@
##############################################################################
#
-# mh_sbuserinfo.pl v1.05 (20161106)
+# mh_sbuserinfo.pl v1.06 (20170424)
#
-# Copyright (c) 2015, 2016 Michael Hansen
+# Copyright (c) 2015-2017 Michael Hansen
#
# Permission to use, copy, modify, and distribute this software
# for any purpose with or without fee is hereby granted, provided
@@ -20,7 +20,7 @@
#
##############################################################################
#
-# statusbar item that shows users and limit info in channels
+# statusbar item that shows user count (opers, ops, halfops, voice and total) and limit info (with opless/limit warning) in channels
#
# displays in the statusbar the number of users and the limit of the channel,
# with several settings for finetuning:
@@ -30,6 +30,11 @@
# "(<limitusers>)" shows the difference between the limit and current
# users (this can be negative if the limit is lower than users)
#
+# (if you do not already have another script running a periodical who on channels,
+# you will need one (autowho.pl from irssi.org for example). otherwise oper/away
+# counts will not update correctly (if you do not use oper/away details you can ignore
+# this))
+#
# setting mh_sbuserinfo_format_group_begin (default '(') and
# setting mh_sbuserinfo_format_group_end' (default ')'); change the characters grouping
# details
@@ -43,16 +48,18 @@
#
# setting mh_sbuserinfo_show_details (default ON): enable/disable showing a
# detailed breakout of users into opers, ops, halfops, voice and normal
+# (further customisable with _show_details_*)
#
# setting mh_sbuserinfo_show_details_mode (default ON): enable/disable
# prefixing opers, ops, halfops and voice with *@%+ when details are enabled
#
+# setting mh_sbuserinfo_format_mode_away (default 'z'),
# setting mh_sbuserinfo_format_mode_oper (default '*'),
# setting mh_sbuserinfo_format_mode_op (default '@'),
# setting mh_sbuserinfo_format_mode_ho (default '%%'),
# setting mh_sbuserinfo_format_mode_vo (default '+') and
# setting mh_sbuserinfo_format_mode_other (default ''): change the mode prefix
-# for each of oper, op, halfdop, voice and others
+# for each of away, oper, op, halfdop, voice and others
#
# setting mh_sbuserinfo_show_details_halfop (default OFF): enable/disable
# showing halfops when details are enabled
@@ -60,6 +67,9 @@
# setting mh_sbuserinfo_show_details_oper (default ON): enable/disable
# showing opers when details are enabled
#
+# setting mh_sbuserinfo_show_details_away (default ON): enable/disable
+# showing users away when details are enabled
+#
# setting mh_sbuserinfo_show_details_difference (default ON): enable/disable
# showing the "(<limitusers>)"
#
@@ -86,6 +96,11 @@
#
# history:
#
+# v1.06 (20170424)
+# added 'sbitems' to irssi header for better scriptassist.pl support (github issue #1)
+# added _show_details_away/_format_mode_away and supporting code
+# some description and documentation changes
+#
# v1.05 (20161106)
# added setting _show_details_oper and supporting code
# added setting _format_sep and supportingf code
@@ -94,22 +109,27 @@
# added setting _format_mode_oper, _format_mode_op, _format_mode_ho, _format_mode_vo and _format_mode_other, and supporting code
# added settting _show_warning_limit_difference and supporting code (changing _show_warning_limit_percent behavior)
# changed default of _show_warning_limit_percent from 95 to 0
+#
# v1.04 (20151225)
# added setting _show_details_difference and supporting code
# changed _show_warning_limit_percent default from 90 to 95
# added changed field to irssi header
# added a few comments
+#
# v1.03 (20151201)
# added setting _show_prefix and supporting code
# changed setting _show_details_mode default to ON
# updated documentation
+#
# v1.02 (20151127)
# only show item when channel is synced
# cleaned out redundant code
+#
# v1.01 (20151127)
# call statusbar_redraw directly in signals
# now using elsif
# removed timeout on load
+#
# v1.00 (20151126)
# initial release
#
@@ -127,16 +147,17 @@ use strict;
use Irssi 20100403;
use Irssi::TextUI;
-our $VERSION = '1.05';
+our $VERSION = '1.06';
our %IRSSI =
(
'name' => 'mh_sbuserinfo',
- 'description' => 'statusbar item that shows users and limit info in channels',
+ 'description' => 'statusbar item that shows user count (opers, ops, halfops, voice and total) and limit info (with opless/limit warning) in channels',
'license' => 'BSD',
'authors' => 'Michael Hansen',
'contact' => 'mh on IRCnet #help',
'url' => 'http://scripts.irssi.org / https://github.com/mh-source/irssi-scripts',
- 'changed' => 'Sun Nov 6 20:37:05 CET 2016',
+ 'changed' => 'Mon Apr 24 09:34:36 CEST 2017',
+ 'sbitems' => 'mh_sbuserinfo',
);
##############################################################################
@@ -215,6 +236,7 @@ sub statusbar_userinfo
my $users_ho = 0;
my $users_vo = 0;
my $users_oper = 0;
+ my $users_gone = 0;
my $warning_format = Irssi::settings_get_str('mh_sbuserinfo_warning_format');
for my $nick ($channel->nicks())
@@ -238,6 +260,11 @@ sub statusbar_userinfo
{
$users_oper++;
}
+
+ if ($nick->{'gone'})
+ {
+ $users_gone++;
+ }
}
$format .= $users;
@@ -254,6 +281,16 @@ sub statusbar_userinfo
my $showmode = Irssi::settings_get_bool('mh_sbuserinfo_show_details_mode');
+ if (Irssi::settings_get_bool('mh_sbuserinfo_show_details_away'))
+ {
+ if ($showmode)
+ {
+ $format .= Irssi::settings_get_str('mh_sbuserinfo_format_mode_away');
+ }
+
+ $format .= $users_gone . $format_sep
+ }
+
if (Irssi::settings_get_bool('mh_sbuserinfo_show_details_oper'))
{
if ($showmode)
@@ -382,11 +419,13 @@ Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_warning_format',
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_show_prefix', 'Users: ');
Irssi::settings_add_bool('mh_sbuserinfo', 'mh_sbuserinfo_show_details_difference', 1);
Irssi::settings_add_bool('mh_sbuserinfo', 'mh_sbuserinfo_show_details_oper', 1);
+Irssi::settings_add_bool('mh_sbuserinfo', 'mh_sbuserinfo_show_details_away', 1);
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_sep', ':');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_div', '/');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_group_begin', '(');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_group_end', ')');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_mode_oper', '*');
+Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_mode_away', 'z');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_mode_op', '@');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_mode_ho', '%%');
Irssi::settings_add_str( 'mh_sbuserinfo', 'mh_sbuserinfo_format_mode_vo', '+');