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"))
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)
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)
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))
def __set_cache(cls, oid): # 7天未评价的订单自动好评 key = cls.expired_set + oid r.set(key, int(time.time())) r.expire(key, 7 * 24 * 60 * 60)
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)
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)
def initCounter(): r.set("counter", 0)
def setStartflag(flag): r.set("startflag", flag)
def setaiContinue(acont): r.set("aicontinue", acont)
def setContinue(cont): r.set("continue", cont)
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
def __set_cache(cls, oid): # 未支付的订单24小时后自动取消 key = cls.expired_set + oid r.set(key, int(time.time())) r.expire(key, 24 * 60 * 60)
def __set_cache(cls, oid): key = 'order:delivey:' + oid r.set(key, int(time.time())) r.expire(key, 10)
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)