62 Commits

Author SHA1 Message Date
Ryan Schmidt
0b07d9193f Convert var.DISCONNECTED to users (#302)
* Fix inaccuracy in users._add docstring

Also don't track disconnected users by nick anymore. But that seems less
major than fixing the docstring.

* Fixes

* Fix docstring
2017-12-04 14:06:20 -05:00
Vgr E. Barry
7c7a256eab Use get_players for decorators 2017-10-02 11:14:58 -04:00
skizzerz
00886f504a Add DISABLED_COMMANDS config var 2017-09-23 18:37:22 -05:00
Ryan Schmidt
1cc38e54b2 Make potato an alias for villager (#290)
Also allow prefixing commands by their role name to remove ambiguity
should a person be multiple roles. For example, "seer see foo" and
"augur see foo" will now work if a person is both seer and augur
(whereas normal see foo would be ambiguous). A player will be directed
to use the unambiguous prefixed version if we detect that a role command
will fire multiple times for them (note: coming soon).

For sanity reasons, these role prefixes are implemented as exclusive
commands, meaning no other commands or command aliases may use the same
name. Clone needs to be special-cased in this regard, as clone is both a
role name and a command name.
2017-03-24 16:31:08 -04:00
Vgr E. Barry
05b900ef57 Don't allow messages from users we don't know 2017-02-15 11:07:15 -05:00
Vgr E. Barry
37e2d404d3 Add setting to customize traceback frame locals reporting 2017-02-08 13:57:26 -05:00
Vgr E. Barry
e1e3b8d177 Ignore locals from hook.caller 2017-02-02 21:00:47 -05:00
Vgr E. Barry
b68cba12d6 Show local variables from all possibly relevant frames
This doesn't show the variables for a few specific functions, specifically those which have a '_ignore_locals_' local variable set to a truthy value. For now, those functions are handle_error.__call__ (which is present in every traceback ever, due to its nature), cmd.caller and command.caller (one or the other is present in a large number of tracebacks, again due to their nature).

This makes debugging easier when the error is not in the innermost frame, but rather in one or two frames before, and the locals are lost.
2017-01-25 14:05:51 -05:00
Vgr E. Barry
e8338d1ef6 Add the new command API + converted commands
Converted commands mostly use some backwards-compatibility hack. Please don't mind it, I'll eventually get to it.
2016-11-28 20:19:48 -05:00
skizzerz
11d626ab25 Revert old_api cmd change
Causing way too many bugs, need to use a more sane method of breaking
the cmd API, and only do so when it's actually ready to go. My
personal preference is to make the new API use @command instead of @cmd.

This reverts commits c90d35e6c0a9ba96692e9d73bbe27efca405d542 and 5f5966a8b49e5214c82d806ac43a2553754fdee6.
2016-11-20 21:33:36 -06:00
jacob1
c90d35e6c0 add old_api=True to sleepy commands, default it to true 2016-11-20 22:30:13 -05:00
Emanuel Barry
5f5966a8b4 Add a transition method for the old->new interface (#272)
* Add a transition method for the old->new interface

* Modify direct calls to cmd to explicitly use the old API
2016-11-19 17:47:54 +01:00
Vgr E. Barry
abd2dd149d Allow handle_error to decorate its instances 2016-11-16 08:20:02 -05:00
nyuszika7h
be2d33dbe6 Make traceback pastes not expire automatically
Since we have the UUID now, we can delete them at any time if needed,
they don't have to expire automatically, which can be annoying when
trying to look up an old error (although it's also in errors.log).
2016-11-16 14:05:18 +01:00
Vgr E. Barry
d6f2882741 Fix syntax error
Turns out that's 3.5+
2016-11-06 22:18:17 -05:00
Vgr E. Barry
7c753b2810 Improve the error handler
Also, thanks to @nyuszika7h for the uuid idea. I took his early draft and implemented it properly as part of the refactoring I did.
2016-11-06 21:43:01 -05:00
nyuszika7h
136e41a14c Add newline for readability 2016-11-04 00:06:51 +01:00
Vgr E. Barry
04e7f952d3 Improve error handler 2016-11-02 15:18:32 -04:00
jacob1
0a7752fd15 newline changes in error logger
local variables were right next to the next traceback in errors.log even though the belonged to the previous one
2016-10-30 23:02:50 -04:00
Vgr E. Barry
d602a33efd Update handle_error to be more useful
Now, local variables from the innermost frame (i.e. where the error was raised) are printed with the traceback, and the latter includes all of the call stack (instead of just up to the innermost error handler).
2016-10-30 22:34:46 -04:00
jacob1
ab8a05ac1b log errors to errors.log again 2016-10-19 21:01:41 -04:00
Vgr E. Barry
9333588126 Modify the decorators so that nicks may be used for commands
Also add framework so that custom roles can modify what roles are part
of a pack of tetrahedron wolves more easily, but no other part has been
done to help that.
2016-08-15 23:38:33 -04:00
skizzerz
f96d73a8af Make commands that only work while playing fail silently if the person isn't playing 2016-08-11 22:36:37 -05:00
nyuszika7h
3f3b5bf1d7 Use ptpb.pw as pastebin with vanity IDs 2016-08-10 23:43:14 +02:00
skizzerz
eb64f5dc45 Only check silence for role commands, and only after they have the right role 2016-08-09 12:44:30 -05:00
skizzerz
10f94de9b3 Initial work splitting off roles
For now, seer and wild child are done. There are some aspects of those
roles that are still incomplete, namely:
- sorcerer and alpha wolf handling of seer/oracle/augur is still in
  wolfgame.py instead of via events
- wild child does not modify !stats
2016-08-08 19:21:05 -05:00
skizzerz
957ab9a17a Begin work splitting roles into their own files 2016-08-08 18:42:40 -05:00
jacob1
f9c4ef6b28 don't allow users not in the channel to run commands 2016-08-08 18:48:23 -04:00
skizzerz
598c994e43 Allow Iciloo to successfully !vote alpha 2016-07-27 23:22:14 -05:00
skizzerz
1b7b2f6799 Make discrimination based on case ilegel
All hostmask and account comparisons are now case-insensitive (nicks
still aren't, related to #217 -- changing nick sensitivity would break
everything in numerous places).

Also, refactor some things into other files where it makes sense to do
so, because putting unrelated things into the same commit is fun.
2016-07-27 17:03:34 -05:00
skizzerz
16a0a28e36 Re-add botconfig.ADMINS and ADMINS_ACCOUNTS
Still considered legacy/backwards-compat code, so giving out +F flags
should be preferred, but now wildcard admins are possible again.
2016-06-14 17:05:05 -05:00
skizzerz
a6ea55a8fe Finish warning system
- fwarn/warn commands to view and manipulate warnings
- fstasis can now only decrease stasis, not add to it
- refreshdb command can sync bot game state with what is in the db
  (including expiring any unexpired stasis or warnings)
- stasis now expires
- tempban is still not implemented and will not be implemented as
  part of the PR (it will come later, if ever)
- sanctions can be automatically applied after warnings cross a
  certain threshold; some defaults are configured
2016-06-07 14:17:21 -05:00
skizzerz
bba5ab745e Make bot run and fwarn partially work 2016-06-06 18:59:28 -05:00
skizzerz
2d2ce6483a Initial work on new schema and warning system
Still very WIP and not completed, bot likely doesn't even run.
2016-06-06 14:35:58 -05:00
Vgr E. Barry
e8aff5d0c3 Small change to allow stacking of cmd decorators 2016-04-09 14:07:39 -04:00
Vgr E. Barry
a5c9541543 Make sure handle_error(im) is failproof 2015-12-13 10:32:58 -05:00
skizzerz
747249991e Add botconfig.OWNERS_ONLY_COMMANDS to further restrict commands 2015-11-16 12:11:52 -07:00
Lane Farrow
a4e21aa997 move irc messages to json and allow overriding in custom file 2015-11-10 19:58:50 -06:00
Vgr E. Barry
bb8041e0fd Fixed some protected functions not working 2015-11-04 14:19:02 -05:00
Vgr E. Barry
8c0582477e Some tweaks to the error handler 2015-11-04 13:16:35 -05:00
Vgr E. Barry
b28d4bf6e3 Properly fix the error handler 2015-11-04 12:41:47 -05:00
jacob1
55070fd44b add utilities.py, which contains some functions possibly needed by gamemode events
this also fixes it so priest death events finally happen
2015-10-30 17:03:54 -04:00
skizzerz
26e7acc8f8 More fallow/fdeny fixes
- Always apply host-based allows/denies even in var.ACCOUNTS_ONLY is set
- Fix display of mixed-mode allows/denies for a particular user
- Make -acc and -host switches operate more intelligently on both the
  bare command as well as when given an argument
2015-10-18 20:56:27 -05:00
skizzerz
f5ec9c9627 Expand host-based variabls to take full-on hostmasks
This allows for things like making ADMINS/OWNERS take a full hostmask,
or fallowing/fdenying a full hostmask with wildcards. It also allows for
a distinction between two people that share a hostmask but have a
different ident.

stasis now checks all matching stasis and returns the highest amount

fallow/fdeny have two new options -acc and -host to explicitly specify
what type the argument is

-cmds in fallow/fdeny show commands from all matching masks, to bring it
in line with how actual allow/deny parsing works, before it would only
show the first match
2015-09-03 19:38:59 -05:00
Vgr E.Barry
7c9b5ce51b Fix decorators 2015-07-31 13:29:26 -04:00
skizzerz
93345c990d Make DISABLE_ACCOUNTS actually disable account-related stuff.
Right now the only thing that still tracks accounts if DISABLE_ACCOUNTS
is True is stats stuff (in sqlite), as I'm unsure of how we want to
handle that for when accounts aren't enabled; likely track by nick but
unsure on that right now.

This further implements issue #112 but doesn't fix it entirely yet.
2015-07-19 14:37:17 -05:00
Vgr E.Barry
5c6a14154e Change !help to not display aliases
Also improve message splitting and remove string concatenation to use
faster and more memory-efficient methods
2015-06-18 23:20:56 -04:00
nyuszika7h
dd2d82392d Reorganize imports 2015-06-15 15:20:27 +02:00
skizzerz
4d15ee0421 Revert "Speed up startup time a bit"
This reverts commit 77d1eda07478a566a45b022af61d51c84ac68279.

Let's not use "private" modules for nonexistent performance boosts.
2015-06-14 22:25:58 -05:00
Vgr E.Barry
77d1eda074 Speed up startup time a bit
_collections is the C implementation (and where defaultdict lies), and
is as such already loaded when the interpreter is launched. collections
imports a bunch of other useless stuff we're not interested in.
2015-06-14 23:13:49 -04:00