.BANCHO. .FIX. Fix not parting channels when leaving multiplayer matches

This commit is contained in:
Nyo 2016-08-10 12:24:41 +02:00
parent a5fd8b0431
commit 59bcb351cf
6 changed files with 19 additions and 55 deletions

View File

@ -5,9 +5,6 @@ from helpers import userHelper
from objects import glob
from constants import userRanks
from constants import packetIDs
from constants import slotStatuses
from constants import matchModModes
import random
""" Login errors packets
(userID packets derivates) """

View File

@ -1,38 +1,10 @@
"""
Event called when someone parts a channel
"""
from helpers import consoleHelper
from constants import bcolors
from objects import glob
from constants import clientPackets
from constants import serverPackets
from helpers import logHelper as log
from helpers import chatHelper as chat
def handle(userToken, packetData):
# Channel join packet
packetData = clientPackets.channelPart(packetData)
chat.partChannel(token=userToken, channel=packetData["channel"])
"""def partChannel(userToken, channelName, kick = False):
# Get usertoken data
username = userToken.username
userID = userToken.userID
# Remove us from joined users and joined channels
if channelName in glob.channels.channels:
# Check that user is in channel
if channelName in userToken.joinedChannels:
userToken.partChannel(channelName)
# Check if user is in channel
if userID in glob.channels.channels[channelName].connectedUsers:
glob.channels.channels[channelName].userPart(userID)
# Force close tab if needed
if kick == True:
userToken.enqueue(serverPackets.channelKicked(channelName))
# Console output
log.info("{} parted channel {}".format(username, channelName))"""
chat.partChannel(token=userToken, channel=packetData["channel"])

View File

@ -1,6 +1,5 @@
from objects import glob
from helpers import chatHelper as chat
from constants import serverPackets
def handle(userToken, _):
# get data from usertoken
@ -24,7 +23,7 @@ def handle(userToken, _):
match.userLeft(userID)
# Part #multiplayer channel
chat.partChannel(token=userToken, channel="#multi_{}".format(matchID))
#chat.partChannel(token=userToken, channel="#multi_{}".format(matchID), kick=True)
# Set usertoken match to -1
userToken.partMatch()

View File

@ -1,11 +1,7 @@
import datetime
import gzip
import time
from helpers import generalFunctions
from helpers import requestHelper
from objects import glob
from helpers import consoleHelper
from constants import bcolors
from constants import exceptions
from constants import packetIDs
from helpers import packetHelper
@ -117,19 +113,25 @@ class handler(SentryMixin, requestHelper.asyncRequestHandler):
eventHandler = {
# TODO: Rename packets and events
# TODO: Host check for multi
packetIDs.client_changeAction: handleEvent(changeActionEvent),
packetIDs.client_logout: handleEvent(logoutEvent),
packetIDs.client_friendAdd: handleEvent(friendAddEvent),
packetIDs.client_friendRemove: handleEvent(friendRemoveEvent),
packetIDs.client_userStatsRequest: handleEvent(userStatsRequestEvent),
packetIDs.client_requestStatusUpdate: handleEvent(requestStatusUpdateEvent),
packetIDs.client_userPanelRequest: handleEvent(userPanelRequestEvent),
packetIDs.client_channelJoin: handleEvent(channelJoinEvent),
packetIDs.client_channelPart: handleEvent(channelPartEvent),
packetIDs.client_sendPublicMessage: handleEvent(sendPublicMessageEvent),
packetIDs.client_sendPrivateMessage: handleEvent(sendPrivateMessageEvent),
packetIDs.client_setAwayMessage: handleEvent(setAwayMessageEvent),
packetIDs.client_channelJoin: handleEvent(channelJoinEvent),
packetIDs.client_channelPart: handleEvent(channelPartEvent),
packetIDs.client_changeAction: handleEvent(changeActionEvent),
packetIDs.client_startSpectating: handleEvent(startSpectatingEvent),
packetIDs.client_stopSpectating: handleEvent(stopSpectatingEvent),
packetIDs.client_cantSpectate: handleEvent(cantSpectateEvent),
packetIDs.client_spectateFrames: handleEvent(spectateFramesEvent),
packetIDs.client_friendAdd: handleEvent(friendAddEvent),
packetIDs.client_friendRemove: handleEvent(friendRemoveEvent),
packetIDs.client_logout: handleEvent(logoutEvent),
packetIDs.client_joinLobby: handleEvent(joinLobbyEvent),
packetIDs.client_partLobby: handleEvent(partLobbyEvent),
packetIDs.client_createMatch: handleEvent(createMatchEvent),
@ -151,11 +153,8 @@ class handler(SentryMixin, requestHelper.asyncRequestHandler):
packetIDs.client_matchHasBeatmap: handleEvent(matchHasBeatmapEvent),
packetIDs.client_matchTransferHost: handleEvent(matchTransferHostEvent),
packetIDs.client_matchFailed: handleEvent(matchFailedEvent),
packetIDs.client_invite: handleEvent(matchInviteEvent),
packetIDs.client_matchChangeTeam: handleEvent(matchChangeTeamEvent),
packetIDs.client_userStatsRequest: handleEvent(userStatsRequestEvent),
packetIDs.client_requestStatusUpdate: handleEvent(requestStatusUpdateEvent),
packetIDs.client_userPanelRequest: handleEvent(userPanelRequestEvent),
packetIDs.client_invite: handleEvent(matchInviteEvent),
}
# Packets processed if in restricted mode.

View File

@ -129,14 +129,14 @@ def partChannel(userID = 0, channel = "", token = None, toIRC = True, kick = Fal
# Force close tab if needed
# NOTE: Maybe always needed, will check later
if kick == True:
token.enqueue(serverPackets.channelKicked(channelObject.clientName))
token.enqueue(serverPackets.channelKicked(channelClient))
# IRC part
if glob.irc == True and toIRC == True:
glob.ircServer.banchoPartChannel(username, channel)
# Console output
log.info("{} parted channel {}".format(username, channel))
log.info("{} parted channel {} ({})".format(username, channel, channelClient))
# Return IRC code
return 0

View File

@ -1,5 +1,3 @@
import os
class chatFilters:
def __init__(self, fileName="filters.txt"):
self.filters = {}
@ -9,9 +7,8 @@ class chatFilters:
# Reset chat filters
self.filters = {}
# Open filters.txt
#with open(os.path.dirname(os.path.realpath(__file__)) + "/../"+fileName+".txt", "r") as f:
with open("filters.txt", "r") as f:
# Open filters file
with open(fileName, "r") as f:
# Read all lines
data = f.readlines()