Example #1
0
def DoBet(userobj, chatid, st):
    uid = userobj["id"]
    global AliveGame, UserInfo, SendReqIDMap
    if st == "sh":
        st = str(GetUserInfo(uid))
    if re.match("(^[1-9][0-9]{0,1}%$|^100%$)", st):
        fa = int(int(st[:-1]) / 100.0 * GetUserInfo(uid))
        st = str(fa)
    if not re.match("^[1-9][0-9]*$", st):
        return (-1, "无法识别投注金额")
    if not chatid in AliveGame:
        return (-1, "无进行中游戏")
    if not AliveGame[chatid]["status"] == 0:
        return (-1, "游戏状态错误")
    mon = int(st)
    if mon > GetUserInfo(uid):
        return (-1, "余额不足")
    ChangeUserInfo(uid, -mon)
    if not uid in AliveGame[chatid]["player"]:
        AliveGame[chatid]["player"][uid] = {
            "money": 0,
            "name": userobj["first_name"]
        }
    AliveGame[chatid]["player"][uid]["money"] += mon
    if AliveGame[chatid]["messid"] < 0:
        sbsb = AliveGame[chatid]["messid"]
        if not sbsb in SendReqIDMap:
            return (-1, "消息未发出")
        AliveGame[chatid]["messid"] = SendReqIDMap[AliveGame[chatid]["messid"]]
        SendReqIDMap.pop(sbsb)
    typ = AliveGame[chatid]["typ"]
    mess = GameObjList[typ]["name"] + "\n玩家"
    for i in AliveGame[chatid]["player"]:
        mess += "\n" + AliveGame[chatid]["player"][i]["name"] + ": " + str(
            AliveGame[chatid]["player"][i]["money"]) + "(" + str(
                GetUserInfo(i)) + ")"
    UpdateMessage(mess,
                  chatid,
                  AliveGame[chatid]["messid"],
                  button={"inline_keyboard": GenBetButton(chatid)})
    return (0, "下注成功")
Example #2
0
def EndGame(chatid):
    global AliveGame
    (mess, chang) = AliveGame[chatid]["game"].EndGame()
    AliveGame[chatid]["game"].NeedUpdate = False
    #player
    for i in chang:
        ChangeUserInfo(i, chang[i]["money"])
        usm = GetUserInfo(i)
        mess += "\n" + AliveGame[chatid]["player"][i]["name"] + "(" + str(
            AliveGame[chatid]["player"][i]
            ["money"]) + "): " + chang[i]["mess"] + " +" + str(
                chang[i]["money"]) + "(" + str(usm) + ")"
    UpdateMessage(mess, chatid, AliveGame[chatid]["messid"])
    return
Example #3
0
def DoButton(obj):
    global AliveGame
    if (not "data" in obj) or len(obj["data"]) < 1:
        return
    dat = obj["data"].split('+')
    if len(dat) < 2 or (not re.match("^[-]*[1-9][0-9]*$", dat[0])):
        AnswerCallback(obj["id"], "非法请求")
        return
    cid = int(dat[0])
    if not cid in AliveGame:
        AnswerCallback(obj["id"], "无进行中的游戏")
        return
    txt = dat[1]
    if AliveGame[cid]["status"] == 0:
        if txt[0] != '*':
            return
        if txt[1] == 'X':
            res = DoBet(obj["from"], cid, txt[2:])
            sta = False
            if res[0] == 0:
                retx = "成功 "
            else:
                retx = "错误 "
                sta = True
            retx += res[1]
            AnswerCallback(obj["id"], retx, isalert=sta)
        elif txt[1] == 'M':
            AnswerCallback(obj["id"],
                           "余额: " + str(GetUserInfo(obj["from"]["id"])),
                           isalert=True)
        elif txt[1] == 'S':
            if not AliveGame[cid]["player"]:
                AnswerCallback(obj["id"], "没人上车")
                return
            AliveGame[cid]["game"] = GameObjList[AliveGame[cid]["typ"]]["obj"](
                AliveGame[cid]["player"])
            AliveGame[cid]["status"] = 1
            AnswerCallback(obj["id"])
    else:
        ret = AliveGame[cid]["game"].UserCmd(obj["from"]["id"], txt)
        if ret is None:
            AnswerCallback(obj["id"])
        else:
            AnswerCallback(obj["id"], ret[0], ret[1])
    return
Example #4
0
def DoCommand(obj):
    if not "text" in obj:
        return
    txt = obj["text"]
    if len(txt) < 1 or txt[0] != '/':
        return
    cmdall = txt.split(' ')
    cmd = cmdall[0]
    if cmd.find("@") != -1:
        botname = cmd[cmd.find("@"):]
        if botname != "@" + BOTNAME:
            return
        cmd = cmd.replace("@" + BOTNAME, "")

    if cmd == "/help" or cmd == "/start":
        SendMessage(HELPMESSAGE, obj["chat"]["id"])
    if cmd in Cmd2Game:
        StartGame(obj["chat"]["id"], Cmd2Game[cmd])
    if cmd == "/bet":
        if len(cmdall) > 1:
            res = DoBet(obj["from"], obj["chat"]["id"], cmdall[1])
            if res[0] == 0:
                retx = "成功 "
            else:
                retx = "错误 "
            retx += res[1]
            SendMessage(retx, obj["chat"]["id"], reply=obj["message_id"])
    if cmd == '/del':
        global AliveGame
        if obj["chat"]["id"] in AliveGame:
            AliveGame.pop(obj["chat"]["id"])
            SendMessage("已重置", obj["chat"]["id"])

    if PY:
        if cmd == '/py':
            mm = __import__("random").randint(-100, 1000)
            GetUserInfo(obj["from"]["id"])
            ChangeUserInfo(obj["from"]["id"], mm)
            SendMessage("pyed: " + str(mm),
                        obj["chat"]["id"],
                        reply=obj["message_id"])
    return