Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion RoR_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,13 @@ def sayPrivChat(self, msg, uid):

# [game] <username> (<language>) joined the server, using <version>
def sayJoin(self, uid):
self.__send("%s (%s) joined the server, using %s %s." % (self.sm.getUsername(uid), s(self.sm.getLanguage(uid)), s(self.sm.getClientName(uid)), s(self.sm.getClientVersion(uid))), "game")
userinfo = self.sm.getUsername(uid);
invalid = self.main.isUsernameBanned(userinfo)
if invalid:
self.sayInfo("User **%s** with uid **%s** was identified as a habitual ban evader and was banned again." % (self.sm.getUsername(uid), uid))
self.main.queueBan(self.channelID, int(uid))
else:
self.__send("%s (%s) joined the server, using %s %s." % (self.sm.getUsername(uid), s(self.sm.getLanguage(uid)), s(self.sm.getClientName(uid)), s(self.sm.getClientVersion(uid))), "game")

# [game] <username> left the server
def sayLeave(self, uid):
Expand Down
88 changes: 88 additions & 0 deletions services_start.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,11 @@ def __init__(self, *args, **kwargs):
f = open('truck.blacklist')
self.vehiclebans = json.load(f)
f.close()

if os.path.isfile('evader.blacklist') == True:
g = open('evader.blacklist')
self.evaderbans = json.load(g)
g.close()

self.initialised = False

Expand Down Expand Up @@ -329,6 +334,19 @@ def isVehicleBanned(self, truck):

def queueKick(self, cid, uid):
self.messageRoRclientByChannel(cid, ("kick", int(uid), "spawning a banned vehicle"))

def isUsernameBanned(self, user):
if os.path.isfile('evader.blacklist') == False:
return False

for item in self.evaderbans['bans']:
if user == item['username']:
return True

return False

def queueBan(self, cid, uid):
self.messageRoRclientByChannel(cid, ("ban", int(uid), "performing excessive ban evasions"))

async def addVehicleBan(self, cid, truck):
channel = self.get_channel(int(cid))
Expand Down Expand Up @@ -373,6 +391,50 @@ async def removeVehicleBan(self, cid, truck):
json.dump(self.vehiclebans, f)
await channel.send("[info] %s ban removed." % truck)
break

async def addEvaderBan(self, cid, user):
channel = self.get_channel(int(cid))

if os.path.isfile('evader.blacklist') == False:
await channel.send("[info] evader.blacklist not found.")
return

for item in self.evaderbans['bans']:
if user == item['username']:
await channel.send("[info] %s already banned." % user)
return

entry = {'username': user}
self.evaderbans['bans'].append(entry)

with open('evader.blacklist', 'w') as f:
json.dump(self.evaderbans, f)
await channel.send("[info] %s banned." % user)

async def removeEvaderBan(self, cid, user):
channel = self.get_channel(int(cid))

if os.path.isfile('evader.blacklist') == False:
await channel.send("[info] evader.blacklist not found.")
return

found = False
for item in self.evaderbans['bans']:
if user == item['username']:
found = True

if found == False:
await channel.send("[info] %s not found." % user)
return

for x, item in enumerate(self.evaderbans['bans']):
if user == item['username']:
self.evaderbans['bans'].pop(x)

with open('evader.blacklist', 'w') as f:
json.dump(self.evaderbans, f)
await channel.send("[info] %s ban removed." % user)
break

async def serverlist(self, cid):
channel = self.get_channel(int(cid))
Expand All @@ -388,6 +450,12 @@ async def sendVehicleBans(self, cid):
if os.path.isfile('truck.blacklist') == True:
result = "[info] %s bans recorded." % len(self.vehiclebans['bans'])
await channel.send(result, file=discord.File('truck.blacklist'))

async def sendEvaderBans(self, cid):
channel = self.get_channel(int(cid))
if os.path.isfile('evader.blacklist') == True:
result = "[info] %s bans recorded." % len(self.evaderbans['bans'])
await channel.send(result, file=discord.File('evader.blacklist'))

async def api(self, cid):
channel = self.get_channel(int(cid))
Expand Down Expand Up @@ -491,6 +559,13 @@ async def on_message(self, message):
await self.addVehicleBan(message.channel.id, message.content.replace('!banvehicle ' , ''))
else:
await message.channel.send('[info] Syntax: !banvehicle <truck>')
elif "!banevader" in message.content:
args = message.content.split(" ", 1)

if len(args) == 2:
await self.addEvaderBan(message.channel.id, message.content.replace('!banevader ' , ''))
else:
await message.channel.send('[info] Syntax: !banevader <username>')
else:
args = message.content.split(" ", 2)

Expand Down Expand Up @@ -529,6 +604,13 @@ async def on_message(self, message):
await self.removeVehicleBan(message.channel.id, message.content.replace('!unbanvehicle ' , ''))
else:
await message.channel.send('[info] Syntax: !unbanvehicle <truck>')
if "!unbanevader" in message.content:
args = message.content.split(" ", 1)

if len(args) == 2:
await self.removeEvaderBan(message.channel.id, message.content.replace('!unbanevader ' , ''))
else:
await message.channel.send('[info] Syntax: !unbanevader <username>')
else:
self.messageRoRclientByChannel(message.channel.id, ("msg", message.content))

Expand All @@ -546,6 +628,9 @@ async def on_message(self, message):

if message.content.startswith('!vehiclebans') and self.checkDiscordChannel(message.channel.id):
await self.sendVehicleBans(message.channel.id)

if message.content.startswith('!evaderbans') and self.checkDiscordChannel(message.channel.id):
await self.sendEvaderBans(message.channel.id)

if message.content.startswith('!help') and self.checkDiscordChannel(message.channel.id):
str = """
Expand All @@ -565,6 +650,9 @@ async def on_message(self, message):
**!banvehicle** Bans a vehicle
**!unbanvehicle** Unbans a vehicle
**!vehiclebans** Sends vehicle blacklist file
**!banevader** Bans a ban evader
**!unbanevader** Unbans a ban evader
**!evaderbans** Sends evader blacklist file
**!info** Returns server info
**!stats** Returns various server stats. May not be accurate
**!serverlist** Returns a list of servers the bot is connected to
Expand Down