3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-12-05 02:19:26 +01:00
Commit Graph

167 Commits

Author SHA1 Message Date
Pragmatic Software
1a08156443 Add $0 in factoid action to expand to first keyword used to invoke factoid 2017-08-26 01:45:18 -07:00
Pragmatic Software
06d341b41f Automagically transpose a/an preceding factoid variable expansion 2017-08-25 23:36:11 -07:00
Pragmatic Software
8cae7a0847 Pre-expand factoid variables in code-factoids 2017-08-25 15:32:28 -07:00
Pragmatic Software
7f2f32f3d0 Limit max action length from code-factoid result 2017-08-24 15:19:12 -07:00
Pragmatic Software
872d31528a Add code-factoids! 2017-08-23 19:25:43 -07:00
Pragmatic Software
98a061b232 Fix $nick and $arg being overridden by factoids 2017-08-23 19:14:46 -07:00
Pragmatic Software
6e0456940b Repeatedly expand factoid variables for sub-expansions 2017-08-23 00:21:46 -07:00
Pragmatic Software
93a482490d Ensure version factoid is always created after load() 2017-08-05 20:25:26 -07:00
Pragmatic Software
381b4bee4b Use Time::Duration for rate_limit message 2017-08-04 21:05:31 -07:00
Pragmatic Software
45c47aaea7 Remove explicit check if command exists when looking for existing factoids 2017-08-03 16:15:52 -07:00
Pragmatic Software
9864ce09ae Factoid doesn't have effective-level, not the bot itself... 2017-08-03 13:28:52 -07:00
Pragmatic Software
121de07ae2 Whoops, attempted to modify current $action in loop 2017-08-01 21:31:58 -07:00
Tomasz Kramkowski
382e47d971 Fix "keys on scalar" deprecation warning on newer perl. (#3)
This patch fixes the warning "Experimental keys on scalar is now
forbidden" which appears when running pbot on newer versions of perl.
2017-04-10 19:55:52 -07:00
Tomasz Kramkowski
b5d8f72254 License project under MPL2
This patch adds the file LICENSE which is the verbatim copy of the
Mozilla Public License Version 2.0 as retreived from
https://www.mozilla.org/media/MPL/2.0/index.815ca599c9df.txt on
2017-03-05.

This patch also places license headers for the MPL2 type A variant of
the license header in the following files:

PBot/AntiFlood.pm
PBot/BanTracker.pm
PBot/BlackList.pm
PBot/BotAdminCommands.pm
PBot/BotAdmins.pm
PBot/ChanOpCommands.pm
PBot/ChanOps.pm
PBot/Channels.pm
PBot/Commands.pm
PBot/DualIndexHashObject.pm
PBot/EventDispatcher.pm
PBot/FactoidCommands.pm
PBot/FactoidModuleLauncher.pm
PBot/Factoids.pm
PBot/HashObject.pm
PBot/IRCHandlers.pm
PBot/IgnoreList.pm
PBot/IgnoreListCommands.pm
PBot/Interpreter.pm
PBot/LagChecker.pm
PBot/Logger.pm
PBot/MessageHistory.pm
PBot/MessageHistory_SQLite.pm
PBot/NickList.pm
PBot/PBot.pm
PBot/Plugins.pm
PBot/Plugins/AntiAway.pm
PBot/Plugins/AntiKickAutoRejoin.pm
PBot/Plugins/AntiRepeat.pm
PBot/Plugins/AntiTwitter.pm
PBot/Plugins/AutoRejoin.pm
PBot/Plugins/Counter.pm
PBot/Plugins/Quotegrabs.pm
PBot/Plugins/Quotegrabs/Quotegrabs_Hashtable.pm
PBot/Plugins/Quotegrabs/Quotegrabs_SQLite.pm
PBot/Plugins/UrlTitles.pm
PBot/Plugins/_Example.pm
PBot/Refresher.pm
PBot/Registerable.pm
PBot/Registry.pm
PBot/RegistryCommands.pm
PBot/SQLiteLogger.pm
PBot/SQLiteLoggerLayer.pm
PBot/SelectHandler.pm
PBot/StdinReader.pm
PBot/Timer.pm
PBot/Utils/ParseDate.pm
PBot/VERSION.pm
build/update-version.pl
modules/acronym.pl
modules/ago.pl
modules/c11std.pl
modules/c2english.pl
modules/c2english/CGrammar.pm
modules/c2english/c2eng.pl
modules/c99std.pl
modules/cdecl.pl
modules/cfaq.pl
modules/cjeopardy/IRCColors.pm
modules/cjeopardy/QStatskeeper.pm
modules/cjeopardy/Scorekeeper.pm
modules/cjeopardy/cjeopardy.pl
modules/cjeopardy/cjeopardy_answer.pl
modules/cjeopardy/cjeopardy_filter.pl
modules/cjeopardy/cjeopardy_hint.pl
modules/cjeopardy/cjeopardy_qstats.pl
modules/cjeopardy/cjeopardy_scores.pl
modules/cjeopardy/cjeopardy_show.pl
modules/codepad.pl
modules/compiler_block.pl
modules/compiler_client.pl
modules/compiler_vm/Diff.pm
modules/compiler_vm/cc
modules/compiler_vm/compiler_client.pl
modules/compiler_vm/compiler_server.pl
modules/compiler_vm/compiler_server_vbox_win32.pl
modules/compiler_vm/compiler_server_watchdog.pl
modules/compiler_vm/compiler_vm_client.pl
modules/compiler_vm/compiler_vm_server.pl
modules/compiler_vm/compiler_watchdog.pl
modules/compiler_vm/languages/_c_base.pm
modules/compiler_vm/languages/_default.pm
modules/compiler_vm/languages/bash.pm
modules/compiler_vm/languages/bc.pm
modules/compiler_vm/languages/bf.pm
modules/compiler_vm/languages/c11.pm
modules/compiler_vm/languages/c89.pm
modules/compiler_vm/languages/c99.pm
modules/compiler_vm/languages/clang.pm
modules/compiler_vm/languages/clang11.pm
modules/compiler_vm/languages/clang89.pm
modules/compiler_vm/languages/clang99.pm
modules/compiler_vm/languages/clangpp.pm
modules/compiler_vm/languages/clisp.pm
modules/compiler_vm/languages/cpp.pm
modules/compiler_vm/languages/freebasic.pm
modules/compiler_vm/languages/go.pm
modules/compiler_vm/languages/haskell.pm
modules/compiler_vm/languages/java.pm
modules/compiler_vm/languages/javascript.pm
modules/compiler_vm/languages/ksh.pm
modules/compiler_vm/languages/lua.pm
modules/compiler_vm/languages/perl.pm
modules/compiler_vm/languages/python.pm
modules/compiler_vm/languages/python3.pm
modules/compiler_vm/languages/qbasic.pm
modules/compiler_vm/languages/scheme.pm
modules/compiler_vm/languages/server/_c_base.pm
modules/compiler_vm/languages/server/_default.pm
modules/compiler_vm/languages/server/c11.pm
modules/compiler_vm/languages/server/c89.pm
modules/compiler_vm/languages/server/c99.pm
modules/compiler_vm/languages/server/clang.pm
modules/compiler_vm/languages/server/clang11.pm
modules/compiler_vm/languages/server/clang89.pm
modules/compiler_vm/languages/server/clang99.pm
modules/compiler_vm/languages/server/cpp.pm
modules/compiler_vm/languages/server/freebasic.pm
modules/compiler_vm/languages/server/haskell.pm
modules/compiler_vm/languages/server/java.pm
modules/compiler_vm/languages/server/qbasic.pm
modules/compiler_vm/languages/server/tendra.pm
modules/compiler_vm/languages/sh.pm
modules/compiler_vm/languages/tendra.pm
modules/compliment
modules/cstd.pl
modules/define.pl
modules/dice_roll.pl
modules/excuse.sh
modules/expand_macros.pl
modules/fnord.pl
modules/funnyish_quote.pl
modules/g.pl
modules/gdefine.pl
modules/gen_cfacts.pl
modules/gencstd.pl
modules/get_title.pl
modules/getcfact.pl
modules/google.pl
modules/gspy.pl
modules/gtop10.pl
modules/gtop15.pl
modules/headlines.pl
modules/horoscope
modules/horrorscope
modules/ideone.pl
modules/insult.pl
modules/love_quote.pl
modules/man.pl
modules/map.pl
modules/math.pl
modules/prototype.pl
modules/qalc.pl
modules/random_quote.pl
modules/seen.pl
modules/urban
modules/weather.pl
modules/wikipedia.pl
pbot.pl
pbot.sh

It is highly recommended that this list of files is reviewed to ensure
that all files are the copyright of the sole maintainer of the
repository. If any files with license headers contain the intellectual
property of anyone else, it is recommended that a request is made to
revise this patch or that the explicit permission of the co-author is
gained to allow for the license of the work to be changed.

I (Tomasz Kramkowski), the contributor, take no responsibility for any
legal action taken against the maintainer of this repository for
incorrectly claiming copyright to any work not owned by the maintainer
of this repository.
2017-03-06 00:31:15 +00:00
Pragmatic Software
0e4f2d1447 Minor effective-level /kick derp 2016-11-16 19:14:00 -08:00
Pragmatic Software
f3b3e90cdc Add factoid effective-level metadata and ability to kick from such factoids
Factoids can now have an effective-level metadata field. When set, certain
functionality requiring an effective-level will be enabled.

For now, that is currently only the /kick command, which has an effective-level
of 10.

Factoids with an effective-level set will also have the locked metadata
attribute set as well to prevent people from changing the factoid.  The
locked and/or effective-level attributes will be removable only by admins
whose level is equal to or greater than the effective-level.
2016-11-16 19:07:01 -08:00
Pragmatic Software
0397068a7f Undo recent blink addition 2016-10-23 03:50:34 -07:00
Pragmatic Software
8addeb5d49 Allow "nick: !command" to address to nick; minor improvements 2016-10-14 05:56:54 -07:00
Pragmatic Software
f34854fcec Add nick similarity completion
Previously, the bot wouldn't address people by nick if the provided nick
argument doesn't exist in the channel.

Now, the bot's nick list is searched for a nick with a certain similarity
percentage in the order of most recently spoken nicks first. This allows
the bot to address nicks when somebody may have forgotten to add a trailing
underscore/punctuation or may have typoed the nick.

The similarity percentage can be set via the interpreter->nick_similiarty
registry key.  A value of 0 should disable the behavior.
2016-09-25 00:03:37 -07:00
Pragmatic Software
e6e7f325fb Add individual change-logs for factoid triggers 2015-12-13 13:58:01 -08:00
Pragmatic Software
aa749860c0 Look for module in global channel before falling back to local channel 2015-10-25 04:01:45 -07:00
Pragmatic Software
89eda8f0a9 Fix undefined variable warning in find_factoid 2015-10-19 12:21:42 -07:00
Pragmatic Software
930801a5fb Require curly braces or backticks around embedded commands 2015-10-10 04:27:36 -07:00
Pragmatic Software
54b8750d1b Allow adding channels as factoid adlib modifier 2015-10-05 02:11:52 -07:00
Pragmatic Software
cf72a11658 Improve factoid expansions 2015-10-05 02:03:13 -07:00
Pragmatic Software
a5c700eec3 Correct encode_entities() in export_factoids() for URLs, etc 2015-10-02 20:14:48 -07:00
Pragmatic Software
dc2f372551 Add missing encode_entities() to export_factoids() 2015-10-02 20:06:25 -07:00
Pragmatic Software
04aaeb5475 Fix handling of no factoid found from find_factoid() 2015-09-19 00:27:15 -07:00
Pragmatic Software
b5c5162ad0 Minor refactor of title case of adlib modifier 2015-09-14 10:29:28 -07:00
Pragmatic Software
739c28125b Remove extraneous whitespace 2015-09-14 10:25:16 -07:00
Pragmatic Software
aed3f34c43 Add optional modifiers to factoid variables
Adlib list variables can now accept trailing modifier keywords prefixed with
a colon. These can be chained together to combine their effects.

     :uc - uppercases the expansion
     :lc - lowercases the expansion
     :ucfirst - uppercases the first letter in the expansion
     :title - lowercases the expansion and then uppercases the first letter
              (effectively an alias for :lc:ucfirst)

Examples:
   <pragma_> echo $colors:uc
   <candide> RED
   <pragma_> echo $colors:ucfirst
   <candide> Blue
2015-09-14 10:22:55 -07:00
Pragmatic Software
ecaa45b3dc Expand factoid variables sooner so argument processing occurs on expanded action 2015-09-14 09:06:00 -07:00
Pragmatic Software
fa2865fb10 Fix potential undefined variable warning 2015-09-08 01:30:08 -07:00
Pragmatic Software
8c16fbd3e5 Allow factoids to be referenced from within messages
E.g.,

<pragma-> Userbob: You can learn more about candide by reading its !help page and checking out its !source
<candide> Userbob: To learn all about me, see http://www.iso-9899.info/wiki/Candide
<candide> Userbob: My guts can be browsed at https://github.com/pragma-/pbot

Only three triggers will be processed per message.  (I should create a
registry entry to customize this.)

Messages that are addressed at a specific user that exists in the channel will
have that user's name prepended to the factoid output.

Factoid triggers that are referenced from within messages will not produce
error messages if the factoid is not found.

Factoids that have an $arg or $nick special variable will not be triggered as
a reference.

Factoids that have the `noembed` meta-data value set to a true value will not
be invoked as a reference.
2015-09-03 20:56:44 -07:00
Pragmatic Software
bded959ba4 Remove unnecessary logic 2015-07-23 17:46:33 -07:00
Pragmatic Software
ba87aef524 Improve factshow/factfind behavior
factshow's and factfind's channel argument is now optional.

The commands will now automatically determine the channel a factoid lives in
if it is the only factoid of that name.

If there are multiple factoids existing in different channels then the commands
will display a disambiguation message and require an explicit channel argument
to choose a specific channel's factoid.
2015-07-21 15:07:56 -07:00
Pragmatic Software
241c30b4f4 Do not override special variables in expand_factoid_vars() 2015-07-09 23:24:00 -07:00
Pragmatic Software
1179a7e1f1 Don't remove dollar-sign from unexpanded factoid vars 2015-07-06 20:01:17 -07:00
Pragmatic Software
a0c798dd2a Expand factoid variables in /call statements
This allows us to call random factoids.

E.g.:

  factadd global fact1 is /say This is fact1.
  factadd global fact2 is /say Fact2 is also a pretty neat fact.
  factadd global fact3 is /say But don't forget about fact3!
  factadd global facts is fact1 fact2 fact3
  factadd global randomfact is /call $facts

Invoking the `randomfact` factoid will now randomy pick between
fact1, fact2 and fact3.

This was added to support the `randomkr` factoid.
2015-07-06 19:39:33 -07:00
Pragmatic Software
83f84e261a Minor bug-fixes 2015-07-01 15:21:08 -07:00
Pragmatic Software
144c3ec63b Fix apostrophe in expand action arguments, and fix regex 2015-06-26 00:10:23 -07:00
Pragmatic Software
f10e1c1c89 Support factoid argument indexing/slicing ($arg[0], $arg[2:4], etc) 2015-06-25 22:56:10 -07:00
Pragmatic Software
d431d70ac1 Reduce verbosity of factoid debug messages 2015-06-20 17:48:00 -07:00
Pragmatic Software
f2a8839707 Add $randomnick special factoid variable 2015-06-08 04:43:00 -07:00
Pragmatic Software
789a4bfe2d Correct handling of telling factoid aliases 2015-04-14 20:14:22 -07:00
Pragmatic Software
59c29977e6 Improve handling of factoids
Fix adding factoid to local channel when a factoid of same name already exists for global channel
Fix calling factoid from another channel with `fact` command
Do not prepend nick argument to aliases (/call factoids)
2015-04-10 14:59:17 -07:00
Pragmatic Software
17afac5908 Check commands table for keyword before searching regexs 2015-04-03 15:33:19 -07:00
Pragmatic Software
d1341ab4bd Use proper lookbehind to prevent expansion of escaped variables
Remove adlib recursion loop since using $action already enables
recursion since subsitution on $action resets the regex position
2015-04-03 13:06:24 -07:00
Pragmatic Software
ae3791815b Allow recursive expansion of adlib variables
Rename $count to $depth to reflect recursion
2015-04-03 12:33:39 -07:00
Pragmatic Software
433f381bc9 Don't expand $1, $2, etc, as adlibs 2015-04-03 10:40:48 -07:00
Pragmatic Software
528f66bfed Refactor Factoids.pm to allow expansion of variables in all factoid types
Variables like $args and adlib variables can now be expanded in modules
and other factoid types.
2015-04-03 10:11:21 -07:00
Pragmatic Software
6701ee67f9 find_factoid() can now be told to return found alias instead 2015-03-28 17:49:42 -07:00
Pragmatic Software
ec13cf14bc Search all channels if target channel is not a valid channel (private message, for instance) 2015-02-15 20:18:46 -08:00
Pragmatic Software
f640ade74e Fix regex factoids so that regular factoid keywords have priority over regex triggers 2014-10-28 20:33:11 +00:00
Pragmatic Software
4dbec8001e Fix regex factoids in global namespace not being triggered 2014-10-14 02:30:14 +00:00
Pragmatic Software
60d8235999 Add registry entry to control max recursion depth for interpreter 2014-05-31 01:05:47 +00:00
Pragmatic Software
a81ba775fc Restored load, unload, count and histogram commands.
Removed enable/disable commands; use factset instead.

Add default_rate_limit registry entry.

Add newlines to output of DualIndexHashable set() subroutine.
2014-05-24 12:01:59 +00:00
Pragmatic Software
02c0143634 Add factmove command to rename/move factoids between channels 2014-05-23 12:42:23 +00:00
Pragmatic Software
30e3c5ce35 Remove PBot getter/setters; move anti-flood registry defaults to AntiFlood.pm 2014-05-18 20:09:05 +00:00
Pragmatic Software
e07df35cbf Move command modules out of PBot.pm and into their respective modules
E.g., FactoidCommands.pm is now loaded inside Factoids.pm, etc.

Misc reformatting/refactoring of PBot.pm
2014-05-18 00:27:57 +00:00
Pragmatic Software
d955bfa06c Add centralized configuration registry module
Allows changing of bot configuration values without needing to restart
bot instance or needing to edit pbot.pl script.

Registry will initially be populated with default values from pbot.pl,
but if a registry file exists then the registry values will take
precedence over the pbot.pl values. For instance, if you regset the
bot trigger to '%' then the trigger will be '%' even if pbot.pl has '!'
or something else explicitly set.

Some registry items can have trigger hooks associated with them.  For
instance, the irc->botnick registry entry has a change_botnick_trigger
associated with it which changes the IRC nick on the server when a new
value is set via regset/regadd.

Tons of other fixes and improvements throughout.
2014-05-17 20:08:19 +00:00
Pragmatic Software
d8d26b1cea Add registerable atexit functionality and trap SIGINT 2014-05-16 22:11:31 +00:00
Pragmatic Software
7367e4f18c Include action_with_args in factoids export 2014-04-07 04:50:00 +00:00
Pragmatic Software
8338b009d4 Properly handle preserve-whitespace; use modulelaucher_subpattern regex to correct whitespace 2014-03-18 14:55:34 +00:00
Pragmatic Software
36b7e1fa6f Improve handling of interpreter result and module execution 2014-03-14 10:05:11 +00:00
Pragmatic Software
17ed2fb64a Remove extranous ) typo in "Displaying text" string 2014-03-07 16:51:18 +00:00
Pragmatic Software
921c9917a5 Add $channel special variable for factoids/modules that expands to $from parameter 2014-03-04 21:40:13 +00:00
Pragmatic Software
9b2c374bbb Use export_site properly in Quotegrabs.pm 2014-03-03 10:33:34 +00:00
Pragmatic Software
f6c75f2b4f Factoids and Quotegrabs HTML exported tables can now be filtered 2014-03-03 09:24:33 +00:00
Pragmatic Software
aeec4fb2f5 Restore missing "$keyword is $result" when triggering factoid without $ref_from 2013-10-14 17:22:06 +00:00
Pragmatic Software
d374fdfc01 Skip channels without factoids in html export 2013-10-13 10:23:49 +00:00
Pragmatic Software
c91a8e5c3d Fix /say substitution derp that allowed "/say /msg foo bar" to actually invoke /msg rather than saying "/msg foo bar" 2013-10-12 15:06:27 +00:00
Pragmatic Software
02ebf106a8 Add table of contents to factoids html export 2013-10-12 13:52:12 +00:00
Pragmatic Software
aab27f4797 Improve factoids export to use tablesorter 2013-10-12 13:35:57 +00:00
Pragmatic Software
edff4b6c4c Update ref_user to use full hostmask instead of just nick; add edited_by/edited_on to factoid metadata levels hash 2013-07-31 13:48:50 +00:00
Pragmatic Software
dc52430044 Add SSL support, and other misc updates 2013-02-25 02:27:24 +00:00
Pragmatic Software
39a38b58f8 Triggering non-existent factoids now attempts to factfind (for keywords and text) before trying a levenshtein closest match (of keywords) 2012-11-04 20:42:38 +00:00
Pragmatic Software
ccf1d35a54 Improvements in interpreter; tell <nick> about <command>; etc 2012-08-23 22:50:07 +00:00
Pragmatic Software
8a70c06096 Misc bug fixes and tweaks 2012-07-22 19:22:30 +00:00
Pragmatic Software
1d691caeb9 factoids: don't show nick prefix if has action_with_args; updated factoids
interpreter: don't expand $nick in result for all commands
2011-12-17 00:30:44 +00:00
Pragmatic Software
a57394c762 factoids: oops, broke global channel searching, fixed (exact_channel restored) 2011-02-14 08:09:50 +00:00
Pragmatic Software
bede029261 factoids: probably adds/remove upper/lowercase keywords 2011-02-14 07:25:15 +00:00
Pragmatic Software
cd8791a854 factoids: better handling of triggering factoids in other namesapces; actions_with_args fixed 2011-01-30 07:18:28 +00:00
Pragmatic Software
845dff008e factoids: levenshtein search working again; rate-limit working again 2011-01-30 06:29:05 +00:00
Pragmatic Software
e4019895d3 factoids: added comments explaining namespace handling 2011-01-30 03:55:09 +00:00
Pragmatic Software
cb2c17f636 factids: er, it is fact <location> <keyword> not fact <keyword> <location>, oops 2011-01-30 03:06:45 +00:00
Pragmatic Software
ffdecba6ee factoids: be more clear about how to choose factoids from another channel if ambiguous keyword; find_factoid searches channel namespace better 2011-01-30 03:03:31 +00:00
Pragmatic Software
221a698ecb factoids: if unknown keyword is triggered inadvertedly, .e.g. by referencing the bot by name, and the args dont look like a nick then do not spit out the levenshtein matches text 2011-01-30 02:44:56 +00:00
Pragmatic Software
9336428ea2 factoids: improved handling of factoids belonging to other channels; significantly 2011-01-29 01:21:17 +00:00
Pragmatic Software
44b737a8c3 factoids: allow factset/factunset by regular users; factset/factunset now has list of metadata levels, and does ownership checking; added action_with_args metadata field to be substituted for action if factoid triggered with arguments 2011-01-25 22:40:22 +00:00
Pragmatic Software
a619f8fe9b factoids: Dont break factoids if used from stdin 2011-01-24 23:46:07 +00:00
Pragmatic Software
22c1673f3d factoids: dont remove trailing colon and/or comma from keywords in interpreter 2011-01-24 01:30:19 +00:00
Pragmatic Software
0f47100dc9 Rate-limit now per-channel (sort of) 2010-08-14 09:45:58 +00:00
Pragmatic Software
96db60d0fa encode_entities for factoid URLs in HTML export 2010-07-01 05:54:04 +00:00
Pragmatic Software
28a5d47af1 Exported factoids now have clickable links 2010-07-01 01:43:49 +00:00
Pragmatic Software
affb2c66d5 Remove trailing comma or colon from end of keyword if other characters exist before it; allow sentence-like arguments again 2010-06-30 12:18:25 +00:00
Pragmatic Software
31e53f2aff Allow question-marks in triggers if more than one is used; remove period from factoid names; return undef if factoid keyword is blank 2010-06-30 11:36:45 +00:00
Pragmatic Software
c6e48954c5 Levenshtein distance increased from 50% to 60%; Levenshtein searches all channels on unfound factoid 2010-06-30 10:59:50 +00:00
Pragmatic Software
9fa3b865e9 Factoids now ignore arguments that do not look like a nick if the factoid doesn't take an argument -- fixes factoid triggers on sentences with bot's name; find_factoid searches global channel if $from is not a channel 2010-06-30 04:58:22 +00:00
Pragmatic Software
5f5cd6ec08 regex factoids now trigger properly 2010-06-30 03:48:13 +00:00