v1.8.0 release

This commit is contained in:
jesopo 2019-06-03 13:30:39 +01:00
parent 248772f3e3
commit ef221f4165
9 changed files with 40 additions and 40 deletions

View file

@ -1,4 +1,4 @@
# TBD - BitBot v1.8.0 # 2019-06-03 - BitBot v1.8.0
Added: Added:
- Module dependency system - Module dependency system

View file

@ -11,7 +11,7 @@ class Module(ModuleManager.BaseModule):
default_event = any(default_events) default_event = any(default_events)
kwargs = {"command": line.command, "args": line.args, "tags": line.tags, kwargs = {"command": line.command, "args": line.args, "tags": line.tags,
"server": server, "prefix": line.prefix, "server": server, "source": line.source,
"direction": utils.Direction.Recv} "direction": utils.Direction.Recv}
self.events.on("raw.received").on(line.command).call_unsafe(**kwargs) self.events.on("raw.received").on(line.command).call_unsafe(**kwargs)

View file

@ -8,7 +8,7 @@ def handle_332(events, event):
topic=topic) topic=topic)
def topic(events, event): def topic(events, event):
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
channel = event["server"].channels.get(event["args"][0]) channel = event["server"].channels.get(event["args"][0])
topic = event["args"].get(1) topic = event["args"].get(1)
channel.set_topic(topic) channel.set_topic(topic)
@ -69,17 +69,17 @@ def join(events, event):
account = event["args"][1] account = event["args"][1]
realname = event["args"][2] realname = event["args"][2]
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
user.username = event["prefix"].username user.username = event["source"].username
user.hostname = event["prefix"].hostname user.hostname = event["source"].hostname
if account: if account:
user.identified_account = account user.identified_account = account
user.identified_account_id = event["server"].get_user(account).get_id() user.identified_account_id = event["server"].get_user(account).get_id()
if realname: if realname:
user.realname = realname user.realname = realname
is_self = event["server"].is_own_nickname(event["prefix"].nickname) is_self = event["server"].is_own_nickname(event["source"].nickname)
if is_self: if is_self:
channel = event["server"].channels.add(channel_name) channel = event["server"].channels.add(channel_name)
else: else:
@ -101,7 +101,7 @@ def join(events, event):
def part(events, event): def part(events, event):
channel = event["server"].channels.get(event["args"][0]) channel = event["server"].channels.get(event["args"][0])
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
reason = event["args"].get(1) reason = event["args"].get(1)
channel.remove_user(user) channel.remove_user(user)
@ -109,7 +109,7 @@ def part(events, event):
if not len(user.channels): if not len(user.channels):
event["server"].remove_user(user) event["server"].remove_user(user)
if not event["server"].is_own_nickname(event["prefix"].nickname): if not event["server"].is_own_nickname(event["source"].nickname):
events.on("received.part").call(channel=channel, reason=reason, events.on("received.part").call(channel=channel, reason=reason,
user=user, server=event["server"]) user=user, server=event["server"])
else: else:
@ -137,7 +137,7 @@ def handle_477(timers, event):
server_id=event["server"].id) server_id=event["server"].id)
def kick(events, event): def kick(events, event):
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
target = event["args"][1] target = event["args"][1]
channel = event["server"].channels.get(event["args"][0]) channel = event["server"].channels.get(event["args"][0])
reason = event["args"].get(2) reason = event["args"].get(2)

View file

@ -8,7 +8,7 @@ def ping(event):
def handle_001(event): def handle_001(event):
event["server"].socket.enable_write_throttle() event["server"].socket.enable_write_throttle()
event["server"].name = event["prefix"].hostmask event["server"].name = event["source"].hostmask
event["server"].set_own_nickname(event["args"][0]) event["server"].set_own_nickname(event["args"][0])
event["server"].send_whois(event["server"].nickname) event["server"].send_whois(event["server"].nickname)
event["server"].connected = True event["server"].connected = True
@ -65,7 +65,7 @@ def motd_line(event):
event["server"].motd_lines.append(event["args"][1]) event["server"].motd_lines.append(event["args"][1])
def mode(events, event): def mode(events, event):
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
target = event["args"][0] target = event["args"][0]
is_channel = target[0] in event["server"].channel_types is_channel = target[0] in event["server"].channel_types
if is_channel: if is_channel:
@ -98,7 +98,7 @@ def mode(events, event):
def invite(events, event): def invite(events, event):
target_channel = event["args"][1] target_channel = event["args"][1]
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
target_user = event["server"].get_user(event["args"][0]) target_user = event["server"].get_user(event["args"][0])
events.on("received.invite").call(user=user, target_channel=target_channel, events.on("received.invite").call(user=user, target_channel=target_channel,
server=event["server"], target_user=target_user) server=event["server"], target_user=target_user)

View file

@ -1,20 +1,20 @@
from src import utils from src import utils
def _from_self(server, direction, prefix): def _from_self(server, direction, source):
if direction == utils.Direction.Send: if direction == utils.Direction.Send:
if server.has_capability_str("echo-message"): if server.has_capability_str("echo-message"):
return None return None
else: else:
return True return True
else: else:
if prefix: if source:
return server.is_own_nickname(prefix.nickname) return server.is_own_nickname(source.nickname)
else: else:
return False return False
def message(events, event): def message(events, event):
from_self = _from_self(event["server"], event["direction"], from_self = _from_self(event["server"], event["direction"],
event.get("prefix", None)) event.get("source", None))
if from_self == None: if from_self == None:
return return
@ -25,12 +25,12 @@ def message(events, event):
message = event["args"][1] message = event["args"][1]
if not from_self and ( if not from_self and (
not event["prefix"] or not event["source"] or
not event["server"].name or not event["server"].name or
event["prefix"].hostmask == event["server"].name or event["source"].hostmask == event["server"].name or
target_str == "*"): target_str == "*"):
if event["prefix"]: if event["source"]:
event["server"].name = event["prefix"].hostmask event["server"].name = event["source"].hostmask
events.on("received.server-notice").call(message=message, events.on("received.server-notice").call(message=message,
message_split=message.split(" "), server=event["server"]) message_split=message.split(" "), server=event["server"])
@ -39,7 +39,7 @@ def message(events, event):
if from_self: if from_self:
user = event["server"].get_user(event["server"].nickname) user = event["server"].get_user(event["server"].nickname)
else: else:
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
# strip prefix_symbols from the start of target, for when people use # strip prefix_symbols from the start of target, for when people use
# e.g. 'PRIVMSG +#channel :hi' which would send a message to only # e.g. 'PRIVMSG +#channel :hi' which would send a message to only

View file

@ -19,13 +19,13 @@ def handle_311(event):
def quit(events, event): def quit(events, event):
nickname = None nickname = None
if event["direction"] == utils.Direction.Recv: if event["direction"] == utils.Direction.Recv:
nickname = event["prefix"].nickname nickname = event["source"].nickname
reason = event["args"].get(0) reason = event["args"].get(0)
if event["direction"] == utils.Direction.Recv: if event["direction"] == utils.Direction.Recv:
nickname = event["prefix"].nickname nickname = event["source"].nickname
if (not event["server"].is_own_nickname(nickname) and if (not event["server"].is_own_nickname(nickname) and
not event["prefix"].hostmask == "*"): not event["source"].hostmask == "*"):
user = event["server"].get_user(nickname) user = event["server"].get_user(nickname)
event["server"].remove_user(user) event["server"].remove_user(user)
events.on("received.quit").call(reason=reason, user=user, events.on("received.quit").call(reason=reason, user=user,
@ -37,10 +37,10 @@ def quit(events, event):
def nick(events, event): def nick(events, event):
new_nickname = event["args"].get(0) new_nickname = event["args"].get(0)
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
old_nickname = user.nickname old_nickname = user.nickname
if not event["server"].is_own_nickname(event["prefix"].nickname): if not event["server"].is_own_nickname(event["source"].nickname):
events.on("received.nick").call(new_nickname=new_nickname, events.on("received.nick").call(new_nickname=new_nickname,
old_nickname=old_nickname, user=user, server=event["server"]) old_nickname=old_nickname, user=user, server=event["server"])
else: else:
@ -52,7 +52,7 @@ def nick(events, event):
event["server"].change_user_nickname(old_nickname, new_nickname) event["server"].change_user_nickname(old_nickname, new_nickname)
def away(events, event): def away(events, event):
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
message = event["args"].get(0) message = event["args"].get(0)
if message: if message:
user.away = True user.away = True
@ -65,7 +65,7 @@ def away(events, event):
events.on("received.away.off").call(user=user, server=event["server"]) events.on("received.away.off").call(user=user, server=event["server"])
def chghost(event): def chghost(event):
nickname = event["prefix"].nickname nickname = event["source"].nickname
username = event["args"][0] username = event["args"][0]
hostname = event["args"][1] hostname = event["args"][1]
@ -78,7 +78,7 @@ def chghost(event):
target.hostname = hostname target.hostname = hostname
def setname(event): def setname(event):
nickname = event["prefix"].nickname nickname = event["source"].nickname
realname = event["args"][0] realname = event["args"][0]
user = event["server"].get_user(nickname) user = event["server"].get_user(nickname)
@ -88,7 +88,7 @@ def setname(event):
event["server"].realname = realname event["server"].realname = realname
def account(events, event): def account(events, event):
user = event["server"].get_user(event["prefix"].nickname) user = event["server"].get_user(event["source"].nickname)
if not event["args"][0] == "*": if not event["args"][0] == "*":
user.identified_account = event["args"][0] user.identified_account = event["args"][0]

View file

@ -2,7 +2,7 @@ import enum, queue, os, select, socket, threading, time, traceback, typing, uuid
from src import EventManager, Exports, IRCServer, Logging, ModuleManager from src import EventManager, Exports, IRCServer, Logging, ModuleManager
from src import Socket, utils from src import Socket, utils
VERSION = "v1.7.1" VERSION = "v1.8.0"
SOURCE = "https://git.io/bitbot" SOURCE = "https://git.io/bitbot"
class TriggerResult(enum.Enum): class TriggerResult(enum.Enum):

View file

@ -39,12 +39,12 @@ class Hostmask(object):
class ParsedLine(object): class ParsedLine(object):
def __init__(self, command: str, args: typing.List[str], def __init__(self, command: str, args: typing.List[str],
prefix: Hostmask=None, source: Hostmask=None,
tags: typing.Dict[str, str]=None): tags: typing.Dict[str, str]=None):
self.command = command self.command = command
self._args = args self._args = args
self.args = IRCArgs(args) self.args = IRCArgs(args)
self.prefix = prefix self.source = source
self.tags = {} if tags == None else tags self.tags = {} if tags == None else tags
def __repr__(self): def __repr__(self):
@ -69,8 +69,8 @@ class ParsedLine(object):
if self.tags: if self.tags:
pieces.append(self._tag_str(self.tags)) pieces.append(self._tag_str(self.tags))
if self.prefix: if self.source:
pieces.append(str(self.prefix)) pieces.append(str(self.source))
pieces.append(self.command.upper()) pieces.append(self.command.upper())

View file

@ -45,7 +45,7 @@ def message_tag_unescape(s):
def parse_line(line: str) -> IRCLine.ParsedLine: def parse_line(line: str) -> IRCLine.ParsedLine:
tags = {} # type: typing.Dict[str, typing.Any] tags = {} # type: typing.Dict[str, typing.Any]
prefix = None # type: typing.Optional[IRCLine.Hostmask] source = None # type: typing.Optional[IRCLine.Hostmask]
command = None command = None
if line[0] == "@": if line[0] == "@":
@ -65,8 +65,8 @@ def parse_line(line: str) -> IRCLine.ParsedLine:
trailing = trailing_split trailing = trailing_split
if line[0] == ":": if line[0] == ":":
prefix_str, line = line[1:].split(" ", 1) source_str, line = line[1:].split(" ", 1)
prefix = seperate_hostmask(prefix_str) source = seperate_hostmask(source_str)
command, sep, line = line.partition(" ") command, sep, line = line.partition(" ")
args = [] # type: typing.List[str] args = [] # type: typing.List[str]
@ -77,7 +77,7 @@ def parse_line(line: str) -> IRCLine.ParsedLine:
if not trailing == None: if not trailing == None:
args.append(typing.cast(str, trailing)) args.append(typing.cast(str, trailing))
return IRCLine.ParsedLine(command, args, prefix, tags) return IRCLine.ParsedLine(command, args, source, tags)
REGEX_COLOR = re.compile("%s(?:(\d{1,2})(?:,(\d{1,2}))?)?" % utils.consts.COLOR) REGEX_COLOR = re.compile("%s(?:(\d{1,2})(?:,(\d{1,2}))?)?" % utils.consts.COLOR)