3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-28 23:09:39 +01:00
Commit Graph

36 Commits

Author SHA1 Message Date
Pragmatic Software
001f2024c4
Factoids: add default value modifier
Uses POSIX shell parameter expansion syntax.

    <pragma-> !factadd cookie /me gives a cookie to ${args:-nobody. What a shame}!
       <PBot> cookie added to the global channel.

    <pragma-> !cookie Bob
            * PBot gives a cookie to Bob!

    <pragma-> !cookie
            * PBot gives a cookie to nobody. What a shame!

    <pragma-> !factadd sum /call calc $arg[0]:-1 + $arg[1]:-2
       <PBot> sum added to the global channel.

    <pragma-> !sum
       <PBot> 1 + 2 = 3

    <pragma-> !sum 3
       <PBot> 3 + 2 = 5

    <pragma-> !sum 4 6
       <PBot> 4 + 6 = 10
2024-11-27 12:17:45 -08:00
Pragmatic Software
5f4b2989a1
Factoids: fact no longer adds ref channel to output 2024-11-21 20:21:14 -08:00
Pragmatic Software
888da7dda1
Factoids: move enabled check to before /call 2024-11-15 01:15:37 -08:00
Pragmatic Software
a262139fd2
Factoids: require locked to be exactly 1 to invoke commands with required_caps
This allows us to set `locked` to a value greater than `1` to lock a factoid WITHOUT
allowing invocation of `required_caps` commands. This lets us safely lock a factoid
that has unrestrained `$args` or variables.
2024-11-07 01:45:15 -08:00
Pragmatic Software
12ec8bb77c
Factoids: don't add nick if add_nick defined and set to 0 2024-11-06 22:51:29 -08:00
Pragmatic Software
650bf40a24
Disallow invoking of commands with requires_cap from unlocked factoids
As a security measure to prevent users from creating or modifying factoids to
sneak in commands to trick chanops/admins/botowners/etc into executing those
commands, the command interpreter will now check if the command has been
invoked in the context of a factoid. If so, the factoid must be locked.
2024-11-05 16:48:59 -08:00
Pragmatic Software
9ebc77f4da
Replace preserve_whitespace metadata with condense-whitespace
PBot now preserves whitespace by default. The `preserve_whitespace`
metadata field is now redundant. It has now been replaced with
`condense-whitespace`, which when set to a true value will collapse
adjacent whitespace to a single space.
2024-11-04 00:25:36 -08:00
Pragmatic Software
4c866d39b6
Fix white-space handling; add suppress-no-output 2024-11-03 19:26:56 -08:00
Pragmatic Software
73c4ed465d
Factoid/Variables: minor refactor, no semantic changes 2024-11-02 17:58:14 -07:00
Pragmatic Software
af2d9844b8
Interpreter: allow processing of empty result
This fixes .e.g.:

    <pragma-> !echo foo &{echo bar | { sed s/bar// }} baz

such that it produces the output "foo  baz" instead of no output at all.
2024-11-02 17:53:37 -07:00
Pragmatic Software
755d7bd6c0
Bug fixes
general.debugcontext: filter out cmdlist and arglist

Core/Applets: log applet start/stop and duration

Core/ProcessManager: fix potential race-condition with $context object

Core/Interpreter:

    * expand pronouns before command-substitution
    * attempt to find current channel's factoid instance for metadata
    * remove duplication of command history in command-substition
    * terminate pipe/substitution processing when protecting self

Core/Factoids: limit -url contents to 250kb
2024-10-22 09:50:10 -07:00
Pragmatic Software
597820c053
Core/Factoids: properly restore invalid $variable expansions 2024-10-15 19:56:04 -07:00
Pragmatic Software
646a7f8e7f
Factoids: move /code to after action processing 2024-10-04 22:34:02 -07:00
Pragmatic Software
80f9ea1acd
Interpreter: escaped spaces behave better 2024-05-26 17:44:59 -07:00
Pragmatic Software
2096df16d6
Factoids: process regex factoids when implicitly invoked 2023-09-24 11:24:20 -07:00
Pragmatic Software
5ffde32d46
Factoids: disregard error messages when not explicitly invoked 2023-09-23 13:52:10 -07:00
Pragmatic Software
329c8db33c Factoids: fix factrem/forget
Somehow I missed the `remove()` subroutine when converting
to subroutine signatures...
2023-05-07 13:47:25 -07:00
Pragmatic Software
7ddb32ea16 Update core to use subroutine signatures 2023-04-13 21:04:12 -07:00
Pragmatic Software
8d5b992b4c Update copyright 2023-02-20 21:31:52 -08:00
Pragmatic Software
9f46cf0ebc Factoids: disable nickprefixing when action contains $args at any recursion level 2022-07-09 19:33:43 -07:00
Pragmatic Software
833c20efbb Factoids: do not prefix nick if action has $args 2022-07-08 09:11:16 -07:00
Pragmatic Software
a170b28a8b Factoids: fix behavior of factoid look-up 2022-07-05 23:12:12 -07:00
Pragmatic Software
41b69bdfa5 Factoids: add keep-quotes metadata for applet commands 2022-06-27 19:52:38 -07:00
Pragmatic Software
5619d30a1b Factoids: fix Unicode issue with factfind 2022-06-25 17:34:06 -07:00
Pragmatic Software
619ff86a94 Rename compiler factoid to vm-client 2022-02-14 16:47:46 -08:00
Pragmatic Software
3d97dc2c33 Rename "modules" to "applets"
"Applet" is a much better name for the external command-line
scripts and programs that can be loaded as PBot commands. They
will no longer be confused with Perl modules.

https://en.wikipedia.org/wiki/Applet
2021-11-19 18:05:50 -08:00
Pragmatic Software
136460e6b4 Expand factoid variables/selectors in arguments to code factoids 2021-11-05 13:08:45 -07:00
Pragmatic Software
74401977e1 Factoids: look-up use_output_queue/preserve_whitespace properly 2021-09-10 11:03:20 -07:00
Pragmatic Software
169a4c9fc7 Fix minor issue with command piping; misc clean-ups 2021-09-04 20:53:02 -07:00
Pragmatic Software
d1bb30ef94 Replace Text::Levenshtein with Text::Levenshtein::XS
Text::Levenshtein::XS is much, much, much, much faster and more
efficient.

Existing PBot users: Please run `cpanm Text::Levenshtein::XS` to install this
module.
2021-08-27 19:41:51 -07:00
Pragmatic Software
e9a8620fb0 Factoids/Selectors: Add missing use statement 2021-08-25 22:05:52 -07:00
Pragmatic Software
48373719d8 Factoids: preserve_whitespace now works for all factoids 2021-08-23 19:27:34 -07:00
Pragmatic Software
7c4c5847ab Interpreter: find factoid channel for dont-replace-pronouns metadata 2021-07-28 18:05:14 -07:00
Pragmatic Software
59140d4096 Remove add_nick mess from ProcessManager 2021-07-27 21:27:03 -07:00
Pragmatic Software
67d2dd5d95 Minor clean-up and polish
- add more comments to VERSION.pm
- minor clean up of logging messages
- minor refactoring
- VERSION.pm will no longer be updated as its own distinct commit
2021-07-27 12:01:42 -07:00
Pragmatic Software
6ba7864474 Add missing PBot::Core::Factoids::* files 2021-07-26 21:46:20 -07:00