3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-12-25 12:12:34 +01:00
Commit Graph

221 Commits

Author SHA1 Message Date
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