3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-23 12:29:27 +01:00
Commit Graph

308 Commits

Author SHA1 Message Date
Pragmatic Software
5a26aca801 Convert HashObject file format to JSON to support newlines in factoid contents, etc 2019-06-28 00:22:57 -07:00
Pragmatic Software
5e2cb09744 Fix trailing whitespace throughout 2019-06-26 09:34:19 -07:00
Pragmatic Software
5cf13c1bdd Factoids: Remove use of shellwords 2019-06-22 18:29:54 -07:00
Pragmatic Software
f0181c7a69 Factoids: add default options for named parameters 2019-06-10 09:21:35 -07:00
Pragmatic Software
982d4b4b8d Factoids: find_factoid now takes an options hash instead 2019-06-09 16:33:27 -07:00
Pragmatic Software
b3ac27758d Factoids: keywords can now contain spaces 2019-06-09 09:54:42 -07:00
Pragmatic Software
90f3d390bd Factoids: er, preserve the quotes in arguments 2019-06-08 17:57:31 -07:00
Pragmatic Software
f00cabe4ec Factoids: correct edge-case mishandling of quoted arguments 2019-06-08 17:52:25 -07:00
Pragmatic Software
5d1310adb3 Factoids: variable modifiers such as :ucfirst now pass through to replacements 2019-06-07 13:16:54 -07:00
Pragmatic Software
4a27a7e59f Factoids: factoid variable identifiers can now be delimited with braces (e.g.: ${foo}) 2019-06-06 15:21:15 -07:00
Pragmatic Software
bffbc8b3d0 Factoids: add requires_arguments metadata to tell usage metadata if a usage is required in a pipe or other expansion 2019-06-03 08:50:42 -07:00
Pragmatic Software
563f8da40f Factoids: usage metadata now understands $0 for keyword 2019-06-03 08:01:52 -07:00
Pragmatic Software
ff3ffea15e Factoids: factoid variables can now be quoted properly 2019-06-02 22:34:54 -07:00
Pragmatic Software
460df9ef64 Factoids: Remove packages left-over from execute_code_factoid_using_safe's removal 2019-06-02 19:37:34 -07:00
Pragmatic Software
5eeabccaf2 Factoids: remove execute_code_factoid_using_safe 2019-06-02 19:31:25 -07:00
Pragmatic Software
bb08250673 Factoid usage metadata can now interrupt pipes to display usage message as appropriate 2019-06-02 19:30:35 -07:00
Pragmatic Software
f87e3c7cd8 Factoids: add usage metadata to show usage message if no arguments supplied 2019-06-02 16:59:27 -07:00
Pragmatic Software
6e98c471d2 Factoids: add allow_empty_args metadata to prevent empty $args from expanding as $nick 2019-06-02 16:28:55 -07:00
Pragmatic Software
e9fc0e5474 Factoids: add flag to prevent --keyword-override parsing 2019-05-31 08:21:27 -07:00
Pragmatic Software
d8a9660e39 Factoids: undo weird $args man-in-the-middle behavior 2019-05-29 10:36:09 -07:00
Pragmatic Software
56f7e2ab7d Factoids: stop repeatedly trying to expand undefined factoid variables 2019-05-29 09:49:24 -07:00
Pragmatic Software
925a5e57bd Minor whitespace syntax clean-up throughout 2019-05-28 09:19:42 -07:00
Pragmatic Software
17f5b92a8f Factoids: use correct arguments when calling alias 2019-05-22 23:12:31 -07:00
Pragmatic Software
bebddb5ea9 Factoids: add require_explicit_args metadata to prevent $args from appending undesirably in aliases 2019-05-13 08:37:36 -07:00
Pragmatic Software
5b4af4ce4b Factoids: see previous commit message 2019-05-13 00:24:08 -07:00
Pragmatic Software
73741e5418 code-factoids: handle arguments a little better 2019-05-09 21:04:28 -07:00
Pragmatic Software
7da4003ffd Factoids: replace hard-coded max length values with registry values 2019-05-09 18:04:52 -07:00
Pragmatic Software
0f8966a9ff No longer trips over its feet 2019-05-07 19:57:09 -07:00
Pragmatic Software
2c66a7144b Factoids: Properly look-up root keyword data when overriding 2019-05-02 15:04:04 -07:00
Pragmatic Software
1ff38eaacc Factoids: root keyword can now be overridden 2019-05-02 14:09:33 -07:00
Pragmatic Software
1f6d655a3e Factoids: Fix broken ref_from when using factfind on an alias 2019-05-02 12:39:05 -07:00
k
a19f40251d Fix some broken ,fact behavior (#49) 2018-08-10 13:12:24 -07:00
Pragmatic Software
8af3682dc3 Add quotes around keywords with spaces in output messages 2018-08-08 17:58:53 -07:00
Pragmatic Software
e1028f84a2 Fix escaping of pipes and command substitutions 2018-05-21 19:27:57 -07:00
Pragmatic Software
81dcc3bee1 Add strictnamespace registry key 2018-05-12 02:52:52 -07:00
Pragmatic Software
fd36d91ac4 Remove left-over capture group 2018-04-01 16:36:08 -07:00
Pragmatic Software
ec117c4aec Factoids: Fix expansions for real 2018-04-01 16:34:29 -07:00
Pragmatic Software
8dc7db0857 Factoids: Fix expansions again 2018-04-01 15:03:04 -07:00
Pragmatic Software
fe33e3e777 Fix factoid expansion offset 2018-03-31 14:45:43 -07:00
Pragmatic Software
31e38bf2fe Whoops, forgot a/an in Factoid expansion replacement 2018-03-24 17:37:47 -07:00
Pragmatic Software
e70e016112 Improve factoid variable expansion 2018-03-23 13:34:28 -07:00
Pragmatic Software
0193800c1e Remove leading spaces when replacing empty factoid variable 2018-01-25 23:37:40 -08:00
Pragmatic Software
920747e86a Remove dash from factoid variable identifier naming 2018-01-23 13:58:35 -08:00
Pragmatic Software
7e061741da Improve nick-prefix/override 2018-01-23 13:58:03 -08:00
Pragmatic Software
f8960d79b5 Properly update version factoid on refresh 2018-01-22 23:48:25 -08:00
Pragmatic Software
951c1280ab Factoids: Do not increment depth for skipped expansions 2018-01-21 20:07:33 -08:00
Pragmatic Software
6c0cbb6ff2 Restrict /msg to level 60+ admins 2018-01-20 08:56:45 -08:00
Pragmatic Software
4311d6662d Factoids: Preserve case of indefinite article in expansions 2018-01-19 10:46:15 -08:00
Pragmatic Software
3c509b5306 Fix ratelimit override to use correct channel 2017-12-10 18:36:16 -08:00
Pragmatic Software
99be204a95 Add per-channel ratelimit_override registry object to ... override factoid ratelimits on a per-channel basis 2017-12-10 13:18:00 -08:00
Pragmatic Software
f24c26d2ef Straighten out nickoverride a bit 2017-12-09 13:25:11 -08:00
Pragmatic Software
836a20262f Use correct command for factoid aliases 2017-11-30 18:53:40 -08:00
Pragmatic Software
7b142c68f5 Fix some UTF8 <=> JSON encoding issues? 2017-11-30 18:46:14 -08:00
Pragmatic Software
51735494b3 Minor improvement to nick addressing 2017-11-30 13:11:39 -08:00
Pragmatic Software
e0e8434b85 Fix piping code-factoids 2017-11-28 18:30:35 -08:00
Pragmatic Software
f3a036bc81 Do not expand underscore-prefixed factoid varianbles 2017-11-28 18:30:09 -08:00
Pragmatic Software
1b13f00503 Fix utf8 encoding issue with code-factoids? 2017-11-27 19:18:00 -08:00
Pragmatic Software
3b36634fa9 Fix factoid case duplication; enable me/my for pipes 2017-11-27 02:14:34 -08:00
Pragmatic Software
78a12b3a46 Improve nickoverride processing 2017-11-25 20:00:55 -08:00
Pragmatic Software
52d3cadef7 Improve factoid variable expansion 2017-11-23 14:12:43 -08:00
Pragmatic Software
ba970cbc18 Fix factoid channel reference tag duplication 2017-11-20 16:12:13 -08:00
Pragmatic Software
51b1b25b16 Add debugcontext registry item for $stuff dumps 2017-11-20 16:10:48 -08:00
Pragmatic Software
4d99f1655c Fix unencoded entity in factoids HTML export 2017-11-19 14:37:02 -08:00
Pragmatic Software
7b903854a3 Remove secretstuff; use $stuff context instead 2017-11-17 21:37:54 -08:00
Pragmatic Software
3ed4d58570 Significant refactoring of command passing
Instead of passing locally-scoped short-lived parameters to subroutines,
we now create and pass around a "stuff" context hash.

This allows contextual state to be passed and updated throughout the life
of a command.

This commit is a WIP and is 90% finished. There are likely to be a couple of
edge-cases where strange things may happen. But command-piping mostly works!
2017-11-16 09:23:58 -08:00
Pragmatic Software
69c081fd9a Limit maximum number of factoid variable expansions 2017-11-12 08:04:42 -08:00
Pragmatic Software
7e76740f5b Move special var expansion to expand_special_vars 2017-10-09 19:39:54 -07:00
Pragmatic Software
d771d66d8f fact_find no longer treats some aliases as regex when they alias a built-in command 2017-10-09 19:35:11 -07:00
Pragmatic Software
ab7aa990a0 Add :json modifier to escape variables for JSON 2017-09-23 21:04:21 -07:00
Pragmatic Software
807bfbf235 Persist-key now works on VM-based code-factoids 2017-09-18 21:36:40 -07:00
Pragmatic Software
e43d2ef144 Improvements to code-factoids
Most code languages now accept factoida arguments as command-line
arguments; e.g., argc and argv in C/C++, args[] in Java, @ARGV in Perl, etc.

No longer say "Same output" for code-factoids.
2017-09-15 16:41:36 -07:00
Pragmatic Software
4389d01b54 code-factoids now support native variables (currently only C-family and Perl are implemented) 2017-09-12 05:50:49 -07:00
Pragmatic Software
85693f905a Convert code-factoids to use VM
Code-factoids can now use the compiler virtual machine. Any languages installed
in the VM are valid candidates for code-factoids!

Syntax: factadd keyword /code language code here
2017-09-10 19:53:29 -07:00
Pragmatic Software
8f9875cf18 Correct $tonick/$nick behavior in factiod interpolation 2017-09-05 17:22:47 -07:00
Pragmatic Software
d6a845f988 Do some basic string validation for factoids and such 2017-09-05 00:27:28 -07:00
Pragmatic Software
b6aecce701 Temporarily disable code-factoids
There are a wide range of potential denial-of-service attacks possible
without severely restricting the allowed opcodes. As such, we are
setting code-factoids' default state to disabled. Enable at your own risk.

There are plans to move the code-factoid logic to a virtual machine.
2017-09-03 01:38:25 -07:00
Pragmatic Software
58a629eca4 Correct 0-value factoid var expansion 2017-09-02 01:44:57 -07:00
Pragmatic Software
12a92ea7d3 Replace control chars with escaped ordinals 2017-09-02 00:40:46 -07:00
Pragmatic Software
1b70de807b Change split / / to split /\s+/ throughout 2017-09-02 00:39:29 -07:00
Pragmatic Software
793303fcde Fix factoid var expansion such that 0 can now be yielded 2017-09-02 00:27:01 -07:00
Pragmatic Software
2f014ba2f0 Use /say on returns whose first word is a variable 2017-09-02 00:14:13 -07:00
Pragmatic Software
678d82676d Add interpolate factoid metadata to control interpolation 2017-08-31 03:10:20 -07:00
Pragmatic Software
3b93d6c281 Escape single-quotes before using GetOptionsFromString and shellwords 2017-08-30 02:12:05 -07:00
Pragmatic Software
3d7388b402 Correct expansion of $nick and $args and such 2017-08-28 23:15:57 -07:00
Pragmatic Software
25e104732e Whoops, don't add an $ to $0 expansion, use $0 in factoids and $$0 for factoid variables instead 2017-08-27 20:40:15 -07:00
Pragmatic Software
a6e495352f Remove extraneous $1 2017-08-27 19:54:46 -07:00
Pragmatic Software
c5da50593a Expand $0 and /call in factoid variables 2017-08-27 19:52:36 -07:00
Pragmatic Software
75c6375339 Refactor code-factoid execution a little bit 2017-08-27 04:18:31 -07:00
Pragmatic Software
2cd007d6c4 Execute code-factoids in action_with_args 2017-08-26 21:42:01 -07:00
Pragmatic Software
770e678170 code-factiod symbol name exclusion now more robust 2017-08-26 03:45:58 -07:00
Pragmatic Software
6d552cc710 Double-quoted $0 in code-factoids now expand to root-keyword 2017-08-26 01:50:42 -07:00
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