1 Commits
fixes ... api

Author SHA1 Message Date
Nyo
7699dd288c .BANCHO. Add basic api code 2016-10-31 09:44:36 +01:00
12 changed files with 24 additions and 99 deletions

2
common

Submodule common updated: d68736652c...4b713cbb28

View File

@@ -4,7 +4,6 @@ import random
import requests import requests
from common import generalUtils from common import generalUtils
from common.constants import actions
from common.constants import mods from common.constants import mods
from common.log import logUtils as log from common.log import logUtils as log
from common.ripple import userUtils from common.ripple import userUtils
@@ -665,7 +664,7 @@ def pp(fro, chan, message):
pp = userUtils.getPP(token.userID, gameMode) pp = userUtils.getPP(token.userID, gameMode)
return "You have {:,} pp".format(pp) return "You have {:,} pp".format(pp)
def updateBeatmap(fro, chan, message): def updateBeatmap(fro, chan, to):
try: try:
# Run the command in PM only # Run the command in PM only
if chan.startswith("#"): if chan.startswith("#"):
@@ -700,42 +699,6 @@ def updateBeatmap(fro, chan, message):
except: except:
return False return False
def trick(fro, chan, message):
if chan.startswith("#"):
return False
token = glob.tokens.getTokenFromUsername(fro)
if token is None or token.zingheri != 0:
return False
token.zingheri = 1
return "As you want..."
def treat(fro, chan, message):
if chan.startswith("#"):
return False
token = glob.tokens.getTokenFromUsername(fro)
if token is None or token.zingheri != 0:
return False
if token.actionID != actions.IDLE and token.actionID != actions.AFK:
log.warning(str(token.actionID))
return "You must be in the main menu to give me a treat :3"
token.zingheri = -2
token.leaveStream("zingheri")
usePP = token.gameMode == gameModes.STD or token.gameMode == gameModes.MANIA
if usePP:
currentPP = userUtils.getPP(token.userID, token.gameMode)
gift = currentPP/3
userUtils.setPP(token.userID, token.gameMode, currentPP - gift)
userUtils.setPP(999, token.gameMode, userUtils.getPP(999, token.gameMode) + gift)
else:
currentScore = userUtils.getRankedScore(token.userID, token.gameMode)
gift = currentScore/3
userUtils.setRankedScore(token.userID, token.gameMode, currentScore - gift)
userUtils.setRankedScore(999, token.gameMode, userUtils.getRankedScore(999, token.gameMode) + gift)
token.updateCachedStats()
token.enqueue(serverPackets.userStats(token.userID))
token.enqueue(serverPackets.userStats(999, True))
return "You just gave me {num:.2f} {type} as a treat, thanks! ^.^".format(num=gift, type="pp" if usePP else "score")
""" """
Commands list Commands list
@@ -875,12 +838,6 @@ commands = [
}, { }, {
"trigger": "!update", "trigger": "!update",
"callback": updateBeatmap "callback": updateBeatmap
}, {
"trigger": "trick",
"callback": trick
}, {
"trigger": "treat",
"callback": treat
} }
# #
# "trigger": "!acc", # "trigger": "!acc",

View File

@@ -79,6 +79,4 @@ server_userPresenceBundle = 96
client_userPanelRequest = 97 client_userPanelRequest = 97
client_tournamentMatchInfoRequest = 93 client_tournamentMatchInfoRequest = 93
client_tournamentJoinMatchChannel = 108 client_tournamentJoinMatchChannel = 108
client_tournamentLeaveMatchChannel = 109 client_tournamentLeaveMatchChannel = 109
server_zingheri = 105

View File

@@ -267,7 +267,4 @@ def notification(message):
return packetHelper.buildPacket(packetIDs.server_notification, [[message, dataTypes.STRING]]) return packetHelper.buildPacket(packetIDs.server_notification, [[message, dataTypes.STRING]])
def banchoRestart(msUntilReconnection): def banchoRestart(msUntilReconnection):
return packetHelper.buildPacket(packetIDs.server_restart, [[msUntilReconnection, dataTypes.UINT32]]) return packetHelper.buildPacket(packetIDs.server_restart, [[msUntilReconnection, dataTypes.UINT32]])
def zingheri(message):
return packetHelper.buildPacket(packetIDs.server_zingheri, [[message, dataTypes.STRING]])

View File

@@ -4,7 +4,7 @@ from common.ripple import userUtils
from constants import clientPackets from constants import clientPackets
from constants import serverPackets from constants import serverPackets
from objects import glob from objects import glob
import time
def handle(userToken, packetData): def handle(userToken, packetData):
# Get usertoken data # Get usertoken data
@@ -46,7 +46,6 @@ if userToken.matchID != -1 and userToken.actionID != actions.MULTIPLAYING and us
userToken.actionMd5 = packetData["actionMd5"] userToken.actionMd5 = packetData["actionMd5"]
userToken.actionMods = packetData["actionMods"] userToken.actionMods = packetData["actionMods"]
userToken.beatmapID = packetData["beatmapID"] userToken.beatmapID = packetData["beatmapID"]
userToken.actionLatestUpdate = int(time.time())
# Enqueue our new user panel and stats to us and our spectators # Enqueue our new user panel and stats to us and our spectators
recipients = [userToken] recipients = [userToken]

0
handlers/api/__init__.py Normal file
View File

7
handlers/api/ping.py Normal file
View File

@@ -0,0 +1,7 @@
from common.web.api import api
class handler(api.asyncAPIHandler):
@api.api
@api.args("ses")
def asyncGet(self):
self.data["message"] = "狂乱 Hey Kids!!"

View File

@@ -1,19 +1,12 @@
"""FokaBot related functions""" """FokaBot related functions"""
import random
import re import re
import time
from common import generalUtils from common import generalUtils
from common.constants import actions from common.constants import actions
from common.ripple import userUtils from common.ripple import userUtils
from constants import fokabotCommands from constants import fokabotCommands
from objects import glob
from common.log import logUtils as log
import threading
from helpers import chatHelper as chat
from constants import serverPackets from constants import serverPackets
from objects import glob
# Tillerino np regex, compiled only once to increase performance # Tillerino np regex, compiled only once to increase performance
npRegex = re.compile("^https?:\\/\\/osu\\.ppy\\.sh\\/b\\/(\\d*)") npRegex = re.compile("^https?:\\/\\/osu\\.ppy\\.sh\\/b\\/(\\d*)")
@@ -42,7 +35,7 @@ def fokabotResponse(fro, chan, message):
for i in fokabotCommands.commands: for i in fokabotCommands.commands:
# Loop though all commands # Loop though all commands
#if i["trigger"] in message: #if i["trigger"] in message:
if generalUtils.strContains(message.lower(), i["trigger"].lower()): if generalUtils.strContains(message, i["trigger"]):
# message has triggered a command # message has triggered a command
# Make sure the user has right permissions # Make sure the user has right permissions
@@ -63,23 +56,4 @@ def fokabotResponse(fro, chan, message):
return i["callback"](fro, chan, message[1:]) return i["callback"](fro, chan, message[1:])
# No commands triggered # No commands triggered
return False return False
def zingheriLoop():
log.debug("SONO STATI I ZINGHERI, I ZINGHERI!")
clients = glob.streams.getClients("zingheri")
for i in clients:
log.debug(str(i))
if i not in glob.tokens.tokens:
continue
token = glob.tokens.tokens[i]
if token.userID == 999:
continue
if token.zingheri == -1:
chat.sendMessage("FokaBot", token.username, "Knock knock, trick or treat?\nWho are you?\nI'm a {meme}. I'm a little {meme}.\n(reply with 'trick' or 'treat')".format(meme=random.choice(["shavit", "loctaf", "peppy", "foka", "elfo", "nano", "cupola autoportante"])))
token.zingheri = 0
elif token.zingheri == 1:
if token.actionID == actions.PLAYING and (int(time.time()) - token.actionLatestUpdate >= 25):
token.enqueue(serverPackets.zingheri("You'd better give me a treat next time ;)"))
token.leaveStream("zingheri")
threading.Timer(30, zingheriLoop).start()

View File

@@ -4,6 +4,7 @@ import time
from common.ddog import datadogClient from common.ddog import datadogClient
from common.files import fileBuffer, fileLocks from common.files import fileBuffer, fileLocks
from common.web.api import rateLimit
from objects import channelList from objects import channelList
from objects import matchList from objects import matchList
from objects import streamList from objects import streamList
@@ -50,3 +51,4 @@ startTime = int(time.time())
streams = streamList.streamList() streams = streamList.streamList()
rateLimits = rateLimit.rateLimiters(60, 60)

View File

@@ -64,7 +64,6 @@ class token:
self.actionText = "" self.actionText = ""
self.actionMd5 = "" self.actionMd5 = ""
self.actionMods = 0 self.actionMods = 0
self.actionLatestUpdate = self.pingTime
self.gameMode = gameModes.STD self.gameMode = gameModes.STD
self.beatmapID = 0 self.beatmapID = 0
self.rankedScore = 0 self.rankedScore = 0
@@ -74,11 +73,6 @@ class token:
self.gameRank = 0 self.gameRank = 0
self.pp = 0 self.pp = 0
# -1: Non sa dell'esistenza dei zingheri
# 0: In attesa di risposta al messaggiomem
# 1: zingheri soonTM
self.zingheri = -1
# Generate/set token # Generate/set token
if token_ is not None: if token_ is not None:
self.token = token_ self.token = token_
@@ -94,7 +88,6 @@ class token:
# Join main stream # Join main stream
self.joinStream("main") self.joinStream("main")
self.joinStream("zingheri")
def enqueue(self, bytes_): def enqueue(self, bytes_):
""" """

View File

@@ -67,7 +67,7 @@ class streamList:
return return
self.streams[streamName].broadcast(data) self.streams[streamName].broadcast(data)
def getClients(self, streamName): '''def getClients(self, streamName):
""" """
Get all clients in a stream Get all clients in a stream
@@ -76,4 +76,4 @@ class streamList:
""" """
if streamName not in self.streams: if streamName not in self.streams:
return return
return self.streams[streamName].clients return self.streams[streamName].clients'''

12
pep.py
View File

@@ -25,6 +25,7 @@ from handlers import apiVerifiedStatusHandler
from handlers import ciTriggerHandler from handlers import ciTriggerHandler
from handlers import mainHandler from handlers import mainHandler
from handlers import heavyHandler from handlers import heavyHandler
from handlers.api import ping
from helpers import configHelper from helpers import configHelper
from helpers import consoleHelper from helpers import consoleHelper
from helpers import systemHelper as system from helpers import systemHelper as system
@@ -35,6 +36,7 @@ from objects import fokabot
from objects import glob from objects import glob
def make_app(): def make_app():
return tornado.web.Application([ return tornado.web.Application([
(r"/", mainHandler.handler), (r"/", mainHandler.handler),
@@ -44,7 +46,9 @@ def make_app():
(r"/api/v1/ciTrigger", ciTriggerHandler.handler), (r"/api/v1/ciTrigger", ciTriggerHandler.handler),
(r"/api/v1/verifiedStatus", apiVerifiedStatusHandler.handler), (r"/api/v1/verifiedStatus", apiVerifiedStatusHandler.handler),
(r"/api/v1/fokabotMessage", apiFokabotMessageHandler.handler), (r"/api/v1/fokabotMessage", apiFokabotMessageHandler.handler),
(r"/stress", heavyHandler.handler) (r"/stress", heavyHandler.handler),
(r"/api/v2/ping", ping.handler),
]) ])
if __name__ == "__main__": if __name__ == "__main__":
@@ -134,7 +138,6 @@ if __name__ == "__main__":
consoleHelper.printNoNl("> Creating packets streams... ") consoleHelper.printNoNl("> Creating packets streams... ")
glob.streams.add("main") glob.streams.add("main")
glob.streams.add("lobby") glob.streams.add("lobby")
glob.streams.add("zingheri")
consoleHelper.printDone() consoleHelper.printDone()
# Start fokabot # Start fokabot
@@ -152,11 +155,6 @@ if __name__ == "__main__":
glob.tokens.spamProtectionResetLoop() glob.tokens.spamProtectionResetLoop()
consoleHelper.printDone() consoleHelper.printDone()
# Initialize zingheri loop
consoleHelper.printNoNl("> WOO WOO... ")
fokabot.zingheriLoop()
consoleHelper.printDone()
# Cache user ids # Cache user ids
consoleHelper.printNoNl("> Caching user IDs... ") consoleHelper.printNoNl("> Caching user IDs... ")
userUtils.cacheUserIDs() userUtils.cacheUserIDs()