Exemplo n.º 1
0
def submit():
    subtype = request.form.get("type")
    content = request.form.get("content")
    if not content:
        flash("必须输入内容")
        return redirect(url_for("main.main_page"))
    user_id = get_id()
    if subtype == "captcha":
        challenge = request.form[gt.FN_CHALLENGE]
        validate = request.form[gt.FN_VALIDATE]
        seccode = request.form[gt.FN_SECCODE]
        status = session[gt.GT_STATUS_SESSION_KEY]
        if status:
            result = gt.success_validate(challenge, validate, seccode, user_id)
        else:
            result = gt.failback_validate(challenge, validate, seccode)
        if not result:
            flash("验证失败请重试")
            return redirect(url_for("main.main_page"))
        r.delete("needtest")
        Message.create(user_id=user_id, message=content)
        return redirect(url_for("main.main_page"))
    if r.exists(user_id):
        r.set("needtest", 1)
        flash("短时间内提交过多,请验证后发表")
        return redirect(url_for("main.main_page"))
    else:
        pipe = r.pipeline(transaction=True)
        r.incr(user_id, 1)
        r.expire(user_id, 5)
        pipe.execute()
    Message.create(user_id=user_id, message=content)
    return redirect(url_for("main.main_page"))
Exemplo n.º 2
0
def set_cache():
    Category.set_cache()
    HomeGood.set_cache()
    HomeAct.set_cache()
    GroupGood.set_cache()
    Mine.set_cache()
    DailyLottery.set_cache()

    # 每天10点刷新
    key = 'refresh'
    r.set(key, int(time.time()))
    hour = datetime.datetime.now().hour
    if hour >= 10:
        tomorrow = datetime.date.today() + datetime.timedelta(days=1)
        expired_time = datetime.datetime(tomorrow.year, tomorrow.month, tomorrow.day,
                                         10, 0, 0)
    else:
        today = datetime.date.today()
        expired_time = datetime.datetime(today.year, today.month, today.day,
                                         10, 0, 0)
    r.expireat(key, expired_time)
Exemplo n.º 3
0
def my_report(message):
    """Handles users' reports
    """
    if not r.get(message.reply_to_message.message_id):
        report_to_admins(message)
        r.set(message.reply_to_message.message_id,
              1,
              ex=60 * config.ro_span_mins)
        response = bot.send_message(
            chat_id=message.chat.id,
            text="Мы примем все необходимые меры, спасибо.")
        Timer(
            30,
            bot.delete_message,
            kwargs={
                "chat_id": response.chat.id,
                "message_id": response.message_id
            },
        ).start()
    elif r.incr(
            message.reply_to_message.message_id) >= config.report_threshold:
        ro_giver(message, r)
Exemplo n.º 4
0
def punisher(message):
    """Gives RO to user who posted the message,
    deletes the message from chat,
    forwards the deleted message to the admins,
    triggers judgment buttons
    """

    session = Session()
    user_obj = session.query(User).get(message.from_user.id)
    if not user_obj:
        user_obj = User(message.from_user.id)
        session.add(user_obj)
    else:
        user_obj.msg_count -= 1
    session.commit()
    session.close()

    if r.get("spammer_{}".format(message.from_user.id)):
        bot.delete_message(chat_id=message.chat.id,
                           message_id=message.message_id)
        logger.info(
            "Message {} has been deleted without alerting the admins due to flooding"
            .format(message.message_id))
        return

    if message.from_user.id not in config.admin_ids:
        bot.restrict_chat_member(chat_id=config.chat_id,
                                 user_id=message.from_user.id)
        logger.info(
            "User {} has been restricted for leading to a channel".format(
                get_user(message.from_user)))

    r.set(message.message_id, 1)
    r.set("spammer_{}".format(message.from_user.id),
          1,
          ex=config.spammer_timeout)

    judgement_text = ("Reported user's ID: {} \n"
                      "Reported message's ID: {} \n"
                      "Что будем делать?".format(message.from_user.id,
                                                 message.message_id))
    keyboard = types.InlineKeyboardMarkup(row_width=2)
    btn_ban = types.InlineKeyboardButton(text="Отправить в бан",
                                         callback_data="ban")
    btn_release = types.InlineKeyboardButton(text="Снять РО",
                                             callback_data="release")
    keyboard.add(btn_ban, btn_release)

    for admin_id in config.admin_ids:
        try:
            reported = bot.forward_message(
                chat_id=admin_id,
                from_chat_id=config.chat_id,
                message_id=message.message_id,
            )
            bot.reply_to(reported, judgement_text, reply_markup=keyboard)
        except ApiException as e:
            if str(e.result) == config.unreachable_exc:
                continue

    bot.delete_message(chat_id=message.chat.id, message_id=message.message_id)
    logger.info("Message {} has been successfully auto-reported".format(
        message.message_id))
Exemplo n.º 5
0
 def __set_cache(cls, oid):
     # 7天未评价的订单自动好评
     key = cls.expired_set + oid
     r.set(key, int(time.time()))
     r.expire(key, 7 * 24 * 60 * 60)
Exemplo n.º 6
0
def store_on_cache(country, city, data):
    chache_name = create_cache_name(country, city)
    value = 0
    if data:
        value = 1
    r.set(escape(chache_name), value)
Exemplo n.º 7
0
def store_on_cache(country, city, sku, data):
    chache_name = create_cache_name(country, city, sku)
    value = json.dumps(data)
    r.set(escape(chache_name), value, ex=300)
Exemplo n.º 8
0
def initCounter():
    r.set("counter", 0)
Exemplo n.º 9
0
def setStartflag(flag):
    r.set("startflag", flag)
Exemplo n.º 10
0
def setaiContinue(acont):
    r.set("aicontinue", acont)
Exemplo n.º 11
0
def setContinue(cont):
    r.set("continue", cont)
Exemplo n.º 12
0
def setUTCStarttime():
    shiftts = time.time() - 30 * 24 * 60 * 60
    stime = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.localtime(shiftts))
    r.set("stime", stime)
    return stime
Exemplo n.º 13
0
 def __set_cache(cls, oid):
     # 未支付的订单24小时后自动取消
     key = cls.expired_set + oid
     r.set(key, int(time.time()))
     r.expire(key, 24 * 60 * 60)
Exemplo n.º 14
0
 def __set_cache(cls, oid):
     key = 'order:delivey:' + oid
     r.set(key, int(time.time()))
     r.expire(key, 10)
Exemplo n.º 15
0
import redis
import os
import time
import run
import json
from queue import RedisQueue
from config import r

trend_q = RedisQueue('trending', r)
trend_store = 'trending_store'

while True:
    print 'checking work queue'
    message = trend_q.dequeue()
    print message
    # get trending players
    if message[1] == 'GET TRENDING PLAYERS':
        results = run.trending_players()
        print results
        r.set(trend_store, json.dumps(results))
    time.sleep(2)