18 Commits

Author SHA1 Message Date
Vgr E. Barry
ea3acbfb2a Allow implicit replacement of users without a ident and a host
This takes a different code path because of slightly different conditions; in the first case, the ident and host are both known, and so the instance is hashable. Being hashable, it can be checked for set containment, and exactly one instance in that set will be equal (since the hash is based off of the ident and host, and the comparisons check for all non-None attributes, two instances cannot possibly be equal while having a different hash).

In the second case (the new one), however, at least the ident or the host is missing, and so the hash cannot be calculated. This means that two instances may compare equal and hash to different values (since only non-None attributes are compared), so we need to run through the entire set no matter what to make sure that one - and only one - instance in that set compares equal with the new one. We can't know in advance whether or not there is an instance that compares equal to the new one in that set, nor can we know if there are multiple instances that are going to compare equal.

The two code paths are separated so that the difference in functionality is obvious (and this commit description, as well as the comment in the code, should help with that), and that the distinction remains clear.
2016-11-21 21:44:34 -05:00
Vgr E. Barry
ea51642240 Allow users.get(..., allow_multiple=True) to return an empty list 2016-11-21 21:12:27 -05:00
Vgr E. Barry
d590e7b727 Fix servers setting modes and !fsync breaking the bot 2016-11-21 10:29:14 -05:00
Vgr E. Barry
e922bb220e Move the message queuing to IRCContext 2016-11-20 08:25:45 -05:00
Vgr E. Barry
6d9017a4bd Improve context creation and lowercasing 2016-11-20 08:24:50 -05:00
Vgr E. Barry
9a71b34488 Improve message sending to properly split on the end of lines 2016-11-18 17:27:33 -05:00
Vgr E. Barry
885889495a Properly handle the bot's nick being already in use 2016-11-16 16:18:37 -05:00
Vgr E. Barry
3f806620e4 _ 2016-11-15 20:38:29 -05:00
Vgr E. Barry
360204bf43 Massively improve user handling
This changes how users are handled, making it less likely to encounter duplicate users; in normal circumstances, duplicates shouldn't happen.
2016-11-15 19:54:42 -05:00
Vgr E. Barry
e161325d01 Remove 'channels' from the user interface
We don't use it, as the only places where we'd need to, it's only one channel, and the surrounding code needs to add the user to the channel and vice-versa, so that's pretty pointless.
2016-11-10 10:44:38 -05:00
Vgr E. Barry
a39ded6053 Improve handling of fake contexts 2016-11-06 17:27:09 -05:00
Vgr E. Barry
2244ed4370 Fix wrong function calls in user functions 2016-11-03 12:04:26 -04:00
Vgr E. Barry
62abf6dae8 Fix small issues with fake nicks and channels 2016-11-02 23:35:13 -04:00
Vgr E. Barry
49208db148 Make backwards-compatible users.add return the new "user" 2016-11-02 16:15:16 -04:00
Vgr E. Barry
12eab068be Change the user handling calls in wolfgame.py 2016-10-31 20:44:10 -04:00
Vgr E. Barry
349433c9ab Do a direct lookup for hostmasks for stasis. 2016-10-27 09:13:07 -04:00
Vgr E. Barry
2877abea55 Update as per @skizzerz's comments 2016-10-26 20:06:29 -04:00
Vgr E. Barry
5ec273c6e0 New IRCContext, Channel and User classes
Right now these don't do anything, but in the future they will be how
we'll do channel and user handling.
2016-10-25 18:20:31 -04:00