Beispiel #1
0
    async def on_message(self, message):
        if message.author.id in cmds.BOT_IDS:
            return

        split = message.content.split(' ', 1)  # separate mom?[cmd] from args
        cmd = split[0]
        args = split[1].split(' ') if len(split) > 1 else None

        # Retrieve user from database and create if non-existing
        user = db.user_exists(message.author.id)
        if not user:
            db.adduser(message.author.id)
        prefix = db.get_prefix(message.author.id)

        # Check if a bot command
        if not cmd.startswith(f"mom{prefix}"):
            return

        # Debugging stuff
        name = author_name(message.author)
        print(f"{name} issued {cmd} command. <{args}>")

        cur_cmd = None
        try:
            suffix = cmd[4:]  # Get command suffix
            cur_cmd = COMMANDS[suffix]['cmd']
            await cur_cmd(self, message, args)
        except Exception as error:
            if not cur_cmd:
                return await cmds.error_message(message, title=f"Unknown command '{suffix}'")
            cmds.ERRORS += [time.ctime() + ': ' + str(error)]
            cmd = cmds.format_cmd(prefix, "report")
            await cmds.error_message(message,
                                     title=f"The command {suffix} failed...",
                                     desc=f"Please use ``{cmd}`` if you think it's an unexpected behaviour")
Beispiel #2
0
def process_subgroup_step(message):
    try:
        id = message.chat.id
        user = user_dict[id]
        subgroup = message.text
        if subgroup != '1' and subgroup != '2':
            raise Exception("Не верная подгруппа")
        user.subgroup = int(subgroup)
        user.last_message = get_time()
        user.username = message.chat.username
        user.first_name = message.chat.first_name
        user.last_name = message.chat.last_name

        if database.getuser(id) == None:
            database.adduser(user)
        else:
            database.updateuser(user)
        user_dict.pop(id)

        bot.send_message(id,
                         'Спасибо, можете выбрать нужный вам день!',
                         reply_markup=get_main_markup())
    except Exception as e:
        bot.reply_to(message,
                     'Что-то пошло не так :/ Попробуйте команду /help')
        logger.error("{0}|{1}|{2}: {3} - ERROR_MSG: {4}".format(
            message.chat.username, message.chat.first_name,
            message.chat.last_name, message.text, e))
Beispiel #3
0
def apply():
    username = request.values.get("username")
    sex = request.values.get("sex")
    grade = request.values.get("grade")
    location = request.values.get("location")
    academy = request.values.get("academy")
    phone = request.values.get("phone")
    first = request.values.get("first")
    second = request.values.get("second")
    adjust = request.values.get("adjust")
    time = request.values.get("time")
    introduce = request.values.get("introduce")
    # username = "******"
    # sex = "0"
    # grade = "1"
    # location = "第三次调试"
    # academy = "软件学院"
    # phone = "15564660744"
    # first = "软件"
    # second = "医学"
    # adjust = "0"
    # time = '2020-4-5'
    # introduce = "我爱学习"
    #print('hello1')
    if check1(username, sex, grade, location, academy, phone, first, adjust,
              time, introduce):
        #print('check函数正常')
        result = adduser(username, sex, grade, location, academy, phone, first,
                         second, adjust, time, introduce)
    else:
        result = {'errmsg': 'error2'}
        #print('hello2')
    return Response(json.dumps(result), content_type="applation/json")
Beispiel #4
0
def register():
    form = registerform()
      
    if request.method == 'POST':
        if request.form['action'] == 'Register':
            email = form.email.data.lower()

            if form.validate_on_submit() == False:
                flash_errors(form)
                return render_template('register.html',form=form)
            elif verifyemail(email) == False:
                flash('Email has already been used','error')
                return render_template('register.html',form=form)  
            else:
                #collect data from form to submit to database	   
                newuser = {
		        "name" : {
		            "first" : form.firstname.data,
	                    "last" : form.lastname.data
		          },
		        "email" : form.email.data.lower(),
		        "phone" : form.phone.data,
                        "password": form.password.data,
		        "address" : {
			    "street" : form.address.data,
			    "city" : form.address.data,
			    "state" : form.state.data,
			    "zip" : form.zipcode.data,
		          },
                        "date": datetime.now()
		        }
                #insert into database collection		 
                adduser(newuser)
                flash('Registration Complete!','flashok')
                return redirect(url_for('home'))
        elif request.form['action'] == 'Login':
            return redirect(url_for('home')) 
    elif request.method == 'GET': 
        return render_template('register.html',form=form)
Beispiel #5
0
def register():
    form = registerform()
      
    if request.method == 'POST':
        if request.form['action'] == 'Register':
            email = form.email.data.lower()

            if form.validate_on_submit() == False:
                flash_errors(form)
                return render_template('register.html',form=form)
            elif verifyemail(email) == False:
                flash('Email has already been used','error')
                return render_template('register.html',form=form)  
            else:
                #collect data from form to submit to database	   
                newuser = {
		        "name" : {
		            "first" : form.firstname.data,
	                    "last" : form.lastname.data
		          },
		        "email" : form.email.data.lower(),
		        "phone" : form.phone.data,
                        "password": form.password.data,
		        "address" : {
			    "street" : form.address.data,
			    "city" : form.address.data,
			    "state" : form.state.data,
			    "zip" : form.zipcode.data,
		          },
                        "date": datetime.now()
		        }
                #insert into database collection		 
                adduser(newuser)
                flash('Registration Complete!','flashok')
                return redirect(url_for('home'))
        elif request.form['action'] == 'Login':
            return redirect(url_for('home')) 
    elif request.method == 'GET': 
        return render_template('register.html',form=form)
Beispiel #6
0
def processMessage(message):
    if message['MsgType'] == 'text':
        # 根据用户发来的消息返回对应的消息
        if message['Content'] in ['?', 'help', u'?', u'帮助']:
            # 帮助信息
            articles = getHelpInfoArticles()
            return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
        elif isConsultingLibrary(message['Content']):
            # 用户查询人文图书馆座位信息
            # 以文字消息形式返回
            response = getLibrarySeatText()
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif message['Content'].startswith('/:'):
            # 用户发送表情则返回音乐
            response = getMusicByExpression(message['Content'])
            if (type(response) is types.UnicodeType) or (type(response) is types.StringType):
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            else:
                return makeMusicMessage(message['FromUserName'], message['ToUserName'], response)
        elif u'教' in message['Content']:
            # 查询教室排课信息, 处理的是文字输入
            response = classroom(message['Content'])
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif isTypeOfMusic(message['Content']):
            # 根据音乐类型返回音乐消息
            dict = getTypeDict(message['Content'])
            music = getRandomMusicByType(dict)
            if music['Title'] == '':
                return makeTextMessage(message['FromUserName'], message['ToUserName'], '抱歉,未找到该类型的音乐,换个类型试试吧~')
            else:
                return makeMusicMessage(message['FromUserName'], message['ToUserName'], music)
        elif 'test' in message['Content']:
            # 测试通道
            response = message['Content']
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        else:
            # 判断输入是否为某个教室
            # 若是一个教室则返回教室信息
            # 否则原样返回
            response = getRoomCourseInfo(message['Content'])
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
    elif message['MsgType'] == 'event':
        # 响应用户事件
        if message['Event'] == 'subscribe':
            # 响应订阅事件
            # 订阅号欢迎消息
            #response = u'欢迎关注清华自习小助手,请发送“帮助”或“help”查看帮助信息~'
            # 服务号欢迎消息
            adduser(message['FromUserName'])
            response = u'欢迎关注清华自习小助手,请使用帮助菜单查看帮助信息~也可回复“帮助”或“help”哦~'
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif message['Event'] == 'unsubscribe':
            # 取消订阅事件
            # 订阅号欢送消息
            #response = u'快点重新关注清华助手!'
            deluser(message['FromUserName'])
            response = u'快点重新关注清华助手!'
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif message['Event'] == 'CLICK':
            # 响应点击服务号菜单事件
            if message['EventKey'] == 'COURSE':
                # 教室排课查询
                response = u'查询某教室今天的排课情况\n您可以输入教室编号:\n“6A301”\n“4302”'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'LIBRARY':
                # 文图座位查询
                articles = getLibrarySeatNews()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'CLASSROOM':
                # 空闲教室查询
                response = u'查询某教学楼空闲教室情况\n您可以输入关键词:\n' \
                           u'“四教”\n“六教C区”\n“三教三段2层”\n“今天第三节五教”\n“明天第二节四教三层”\n\n' \
                           u'其中教学楼名称必须指定\n目前支持一到六教'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'MEAL':
                # 推荐吃饭地点
                articles = food_articles()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'STUDY':
                # 推荐自习室
                response = recommend_classroom()
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'MUSIC':
                # 推荐音乐
                articles = formMusicTypeList()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'SIGNIN':
                # 签到功能
                times = signin(message['FromUserName'], message['CreateTime'])
                response = str(times)
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'HELP':
                # 帮助功能
                articles = getHelpInfoArticles()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            else:
                # 其他事件不响应
                response = u'抱歉...暂不支持响应此事件'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
    else:
        # 其他类型的消息不支持
        response = u'暂不支持非文字消息'
        return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
Beispiel #7
0
def processMessage(message):

    if message['MsgType'] == 'text':
        # 取出首尾空格和换行
        message['Content'] = message['Content'].strip('\n')
        message['Content'] = message['Content'].strip(' ')
        # 根据用户发来的消息返回对应的消息
        if message['Content'] in ['?', 'help', u'?', u'帮助']:
            # 帮助信息
            articles = getHelpInfoArticles()
            return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
        elif isConsultingLibrary(message['Content']):
            # 用户查询人文图书馆座位信息
            # 以图文消息形式返回
            articles = getLibrarySeatNews()
            return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
        elif message['Content'].startswith('/:'):
            # 用户发送表情则返回音乐
            response = getMusicByExpression(message['Content'])
            if (type(response) is types.UnicodeType) or (type(response) is types.StringType):
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            else:
                return makeMusicMessage(message['FromUserName'], message['ToUserName'], response)
        elif u'教' in message['Content']:
            # 查询空闲教室信息, 处理的是文字输入
            response = classroom(message['Content'])
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif is_classroom(message['Content']):
            # 查询教室排课信息
            response = getRoomCourseInfo(message['Content'])
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif isTypeOfMusic(message['Content']):
            # 根据音乐类型返回音乐消息
            dict = getTypeDict(message['Content'])
            music = getRandomMusicByType(dict)
            if music['Title'] == '':
                return makeTextMessage(message['FromUserName'], message['ToUserName'], '抱歉,未找到该类型的音乐,换个类型试试吧~')
            else:
                return makeMusicMessage(message['FromUserName'], message['ToUserName'], music)
        elif message['Content'] == u'签到':
            # 输文字签到
            response = signin(message['FromUserName'], message['CreateTime'])
            return makeNewsMessage(message['FromUserName'], message['ToUserName'], response)
        else:
            # 处理用户的其他输入
            response = u'亲~无法识别您的输入,请输入教室代码、文图相关词语、教室查询字符串或音乐类型等与功能相关的文字。详细情况请查看帮助。'
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)

    elif message['MsgType'] == 'event':
        # 响应用户事件
        if message['Event'] == 'subscribe':
            # 订阅事件欢迎消息
            adduser(message['FromUserName'])
            response = [{
                'Title': u'清华助手,带您走向人生巅峰!',
                'PicUrl': URL_WELCOME_IMAGE,
                'Url': URL_HELP
            }, {
                'Title': u'清华自习助手提供了人文馆查座、教学楼空闲教室及教室排课查询功能,给我们的自习提供方便;此外还具有听音乐、推荐清华美食、自习签到等功能,等待您的探索~',
                'Url': URL_HELP
            }, {
                'Title': u'点击此消息查看帮助',
                'Url': URL_HELP
            }]
            return makeNewsMessage(message['FromUserName'], message['ToUserName'], response)
        elif message['Event'] == 'unsubscribe':
            # 取消订阅事件
            deluser(message['FromUserName'])
            response = u'谢谢您关注本产品,再见~'
            return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
        elif message['Event'] == 'CLICK':
            # 响应点击服务号菜单事件
            if message['EventKey'] == 'COURSE':
                # 教室排课查询
                response = u'查询某教室今天的排课情况\n您可以输入教室编号:\n“6A301”\n“4302”'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'LIBRARY':
                # 文图座位查询
                articles = getLibrarySeatNews()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'CLASSROOM':
                # 空闲教室查询
                response = u'查询某教学楼空闲教室情况\n您可以输入关键词:\n' \
                           u'“四教”\n“六教C区”\n“三教三段2层”\n“今天第三节五教”\n“明天第二节四教三层”\n\n' \
                           u'其中教学楼名称必须指定\n目前支持一到六教'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'MEAL':
                # 推荐吃饭地点
                articles = food_articles()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'STUDY':
                # 推荐自习室
                response = recommend_classroom()
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'MUSIC':
                # 推荐音乐
                articles = formMusicTypeList()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            elif message['EventKey'] == 'SIGNIN':
                # 签到功能
                response = signin(message['FromUserName'], message['CreateTime'])
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], response)
            elif message['EventKey'] == 'HELP':
                # 帮助功能
                articles = getHelpInfoArticles()
                return makeNewsMessage(message['FromUserName'], message['ToUserName'], articles)
            else:
                # 其他事件不响应
                response = u'抱歉...暂不支持响应此事件'
                return makeTextMessage(message['FromUserName'], message['ToUserName'], response)
    else:
        # 其他类型的消息不支持
        response = u'暂不支持非文字消息'
        return makeTextMessage(message['FromUserName'], message['ToUserName'], response)