コード例 #1
0
ファイル: test_agent.py プロジェクト: doyouknow/preo-bot
def test_agent_handle_text_message_group_source():
    agent = create_mock_agent()
    group_source = SourceGroup(group_id="G20001", user_id="U10001")
    text_message = TextMessage(text="!new myOrder")
    mock_event = MessageEvent(timestamp=123,
                              source=group_source,
                              reply_token='123',
                              message=text_message)
    assert agent.handle_text_message(mock_event) != None
コード例 #2
0
def handle_join(event):

    # print(event.joined.members)
    user_id = event.joined.members[0].user_id
    group_id = event.source.group_id
    group_profile = line_bot_api.get_group_member_profile(group_id, user_id)
    name = group_profile.display_name

    reply_msg = name + ",你就是我新的身體嗎?"
    line_bot_api.reply_message(event.reply_token, TextMessage(text = reply_msg))
コード例 #3
0
def handle_text_message(event):
    message = str.lower(event.message.text).strip()

    message = message.split(" ")

    if message[0] == '@hn':
        if message[1] == 'best' or message[1] == 'new' or message[1] == 'job':
            keyword = message[1]
            line_bot_api.reply_message(event.reply_token,
                                       getStories(event, keyword))

        elif message[1] == 'menu':
            line_bot_api.reply_message(event.reply_token, [
                getMenu(),
                TextSendMessage(text="Untuk berhenti, ketik '@hn bye'.")
            ])

        elif message[1] == 'bye':
            if event.source.type == 'group':
                line_bot_api.reply_message(
                    event.reply_token,
                    TextMessage(text='Yaah... aku diusir \uDBC0\uDC92'))
                line_bot_api.leave_group(event.source.group_id)
            elif event.source.type == 'room':
                line_bot_api.reply_message(
                    event.reply_token,
                    TextMessage(text='Yaah... aku diusir \uDBC0\uDC92'))
                line_bot_api.leave_group(event.source.room_id)
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextMessage(
                        text='Sorry, aku gabisa keluar dari 1:1 chat.'))

        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Ketik '@hn menu' untuk melihat menu. "))
    else:
        if event.source.type == 'user':
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Ketik '@hn menu' untuk melihat menu. "))
コード例 #4
0
 def __starting_add_store(self):
     # 限定管理員開啟功能
     if Group.objects.filter(group_id=self.group_id,
                             admin__user_id=self.user_id).exists():
         redis.set(f"{self.group_id}:add", True, 60)  # 60秒存活
         self.line_bot_api.reply_message(
             self.event.reply_token,
             TextMessage(text="店家加入功能已開啟一分鐘,可以開始搜尋店家"))
     else:
         self.__do_nothing()
コード例 #5
0
    def send_ask_venue(self, reply_token, signal):

        if "guest" in signal:

            text_message = TextMessage(text='請問你是要問哪個館呢?')

            template_message = self._generate_venue(signal=signal)

            self.line_bot_api.reply_message(
                reply_token, messages=[text_message, template_message])

        elif "manager" in signal:

            text_message = TextMessage(text='OKOK!那想再請問你是哪個館區的管理人員呢?')

            template_message = self._generate_venue(signal=signal)

            self.line_bot_api.reply_message(
                reply_token, messages=[text_message, template_message])
コード例 #6
0
def AIOTproject(reply_token):
    message1 = TextMessage(text="競賽成果:\n"+"我們將比賽提供的開放資料中之ICU病房資料做SQL資料萃取與數據分析技術,研究加護病房病患初始 Lactate 值正常之死亡率現象\n"+"下圖為我們的實作模型,歡迎參考!")
    message2 = ImageSendMessage(
    original_content_url='https://imgur.com/tOMkxrW.jpg',
    preview_image_url='https://imgur.com/tOMkxrW.jpg')
    message3 = ImageSendMessage(
    original_content_url='https://imgur.com/BgXnYcA.jpg',
    preview_image_url='https://imgur.com/BgXnYcA.jpg')
    
    line_bot_api.reply_message(reply_token, [message1,message2,message3])
コード例 #7
0
ファイル: main.py プロジェクト: latin3663/line-bot-test
def index():
    with psycopg2.connect(DATABASE_URL) as conn:
        with conn.cursor() as cur:
            cur.execute("SELECT user_id FROM car_stock.line_user_id")
            userIdRows = cur.fetchall()

    messages = TextMessage(text="Hello world!!")
    for userIdRow in userIdRows:
        line_bot_api.push_message(userIdRow[0], messages)
    return "hello world"
コード例 #8
0
 def receive_command(self, event):
     logger.debug(f"receive event: {event}")
     self.event = event
     self.group_id = event.source.group_id
     if not self.group_id:
         self.line_bot_api.reply_message(
             self.event.reply_token, TextMessage(text="把機器人加入群組才能發揮他的功能歐"))
     self.user_id = event.source.user_id
     self.text = self.event.message.text
     self.command_dict.get(self.text, self.__second_command)()
コード例 #9
0
    def __save_store(self):
        reply = []
        # 兩個選項之外的回應就繼續查詢店家
        if self.text != "Yes" and self.text != "Again":
            self.__search_store()
        elif self.text == "Yes":
            store_data = redis.get(f"{self.group_id}:save_store")
            try:
                with transaction.atomic():
                    # 新增或者獲得店家資訊
                    store, created = Store.objects.get_or_create(
                        store_name=store_data["name"],
                        store_address=store_data["formatted_address"],
                        store_phone=store_data.get("formatted_phone_number"),
                        google_map_url=store_data["url"],
                    )
                    # 如果有店家照片再存
                    if store_data.get("photos"):
                        store.google_photo_url = self.google_map_api.place_photo(
                            store_data["photos"][0]["photo_reference"])
                        store.save()
                    # 為店家綁定群組
                    group = Group.objects.get(group_id=self.group_id)
                    store.group.add(group)
                    # 新增商家種類
                    if created:
                        for type in store_data["types"]:
                            store_type, _ = StoreType.objects.get_or_create(
                                type_name=type)
                            store.store_type.add(store_type)
                        logger.debug("商家種類新增")
            except:
                logging.exception(
                    f"{store_data['name']} saving to database failed!")
            else:
                reply.append(TextMessage(text="資料成功加進去囉!"))
        elif self.text == "Again":
            reply.append(TextMessage(text="店家查詢繼續開放一分鐘"))

        # 如果第一個if條件有達到,這邊不會執行
        redis.set(f"{self.group_id}:add", True, 60)  # 重新開放店家搜尋
        redis.delete(f"{self.group_id}:save_store")  # 刪除店家資料暫存
        self.line_bot_api.reply_message(self.event.reply_token, reply)
コード例 #10
0
def handle_join(event):

    group_id = event.source.group_id
    response = get_group_summary(group_id)
    print('group_id = ', group_id)

    group_name = response['groupName']
    create_line_group(group_name, group_id)

    reply_msg = '真拿你們沒辦法 只有你們太不可靠了 我也加入' + group_name + '吧!要好好感謝我喔☆'
    line_bot_api.reply_message(event.reply_token, TextMessage(text = reply_msg))
コード例 #11
0
def default(reply_token):
    message1 = TextMessage(text="如果你想知道更多關於德馨的秘密可以輸入關鍵字或點選圖文選單喔!!"+
                                "\uDBC0\uDC8D")
    sticker1 = StickerSendMessage(
        package_id='11538',
        sticker_id='51626496')
    
    line_bot_api.reply_message(
        reply_token,
        [message1,
        sticker1])
コード例 #12
0
def handle_follow(event):

    user_id = event.source.user_id
    profile = line_bot_api.get_profile(user_id)
    name = profile.display_name

    create_line_user(name, '', user_id)

    reply_msg = name + '你啊,不要若無其事地向我搭話啦!畢竟又不是朋友,什麼都不是啊!'
    line_bot_api.reply_message(event.reply_token, TextMessage(text=reply_msg))
    print('新加入者: %s , user_id: %s' % (name, user_id))
コード例 #13
0
ファイル: app.py プロジェクト: michaelhendraw/roguapps
def show_material_topic(event, conn, postback):
    # get all subject by class_id
    query_select_subject = 'SELECT * FROM subject WHERE id = %s'
    conn.query(query_select_subject, (postback['subject_id'], ))
    row_subject = conn.cursor.fetchone()

    # get all topic by subject_id
    query_select_topic = 'SELECT * FROM topic WHERE subject_id = %s'
    conn.query(query_select_topic, (postback['subject_id'], ))
    rows_topic = conn.cursor.fetchall()
    if len(rows_topic) == 0:  # topic is empty
        line_bot_api.reply_message(event.reply_token,
                                   [TextMessage(text=constant.TOPIC_EMPTY)])
    else:  # topic exist
        contents = []
        for row in rows_topic:
            contents.append(
                BubbleContainer(
                    direction='ltr',
                    body=BoxComponent(
                        layout='vertical',
                        contents=[
                            TextComponent(text=str(row['name']),
                                          margin='md',
                                          size='xl',
                                          align='center',
                                          gravity='center',
                                          weight='bold'),
                            ButtonComponent(action=PostbackAction(
                                label='Belajar',
                                text='Belajar',
                                data='action=material_learn&subject_id=' +
                                str(row_subject['id']) + '&topic_id=' +
                                str(row['id']))),
                            ButtonComponent(action=PostbackAction(
                                label='Latihan Soal',
                                text='Latihan Soal',
                                data='action=material_quiz&subject_id=' +
                                str(row_subject['id']) + '&topic_id=' +
                                str(row['id']))),
                            ButtonComponent(action=PostbackAction(
                                label='Diskusi',
                                text='Diskusi',
                                data='action=material_discussion&subject_id=' +
                                str(row_subject['id']) + '&topic_id=' +
                                str(row['id'])))
                        ])))

        flex_message = FlexSendMessage(
            alt_text='Carousel Topik',
            contents=CarouselContainer(contents=contents))

        return flex_message
コード例 #14
0
ファイル: views.py プロジェクト: miny342/line_bot
def handle_message(evt):
    if evt.source.user_id not in post_user_state:
        post_user_state[evt.source.user_id] = {"state": None, "bit_state": 16}
    user = post_user_state[evt.source.user_id]
    try:
        response_text = get_response_text(evt, user)

        line_bot_api.reply_message(evt.reply_token,
                                   TextMessage(text=response_text))
    except:
        import traceback
        traceback.print_exc()
コード例 #15
0
ファイル: LineHandler.py プロジェクト: gazandic/line-bot
def handle_postback(event):
    text = event.postback.data
    uid = extract_uid(event.source)
    line_bot_api = lineClient.api

    user_state = StateManager.fetch(uid)

    s = text.split(" ")
    if REQUEST_STATE.get(s[0]):
        try:
            updated_state, output = handle_action(text, text, user_state)
            StateManager.update(uid, updated_state)
            if type(output[0]) == TemplateSendMessage:
                line_bot_api.reply_message(event.reply_token, output)
            else:
                line_bot_api.reply_message(event.reply_token,
                                           TextMessage(text=output))
        except:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="ketik 'si bawel tolong' kak"))
コード例 #16
0
ファイル: chat_0.60.py プロジェクト: SamTseng/icebreaker
def handleNonMessageEvent(event):
    if event.source.user_id:
        profile = line_bot_api.get_profile(event.source.user_id)
        msg_list = [
            TextSendMessage(text="Hi!" + profile.display_name +
                            "\n歡迎加入破冰機器人-小明同學官方帳號(ゝ∀・)")
        ]
        msg_list.append(
            TextSendMessage(
                text="輸入「小明小明,關鍵字」即可搜尋關鍵字笑話\n輸入「小明功能」可查看聊天小明同學的操作說明"))
        msg_list.append(TextSendMessage(text="小明同學也會不定時的回覆笑話參與話題喔٩(๑•̀ω•́๑)۶"))
    else:
        msg_list = []
    if event.type == 'join':
        msg_list = [TextSendMessage(text="Hi!\n感謝您邀請小明(,,・ω・,,)")]
        msg_list.append(
            TextSendMessage(
                text="輸入「小明小明,關鍵字」即可搜尋關鍵字笑話\n輸入「小明功能」可查看聊天小明同學的操作說明"))
        msg_list.append(TextSendMessage(text="小明同學也會不定時的回覆笑話參與話題喔٩(๑•̀ω•́๑)۶"))
    elif event.type == 'leave':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='我離開了。再見!'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text='我離開了。再見!'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Bot can't leave from 1:1 chat"))

    else:
        #msg_list.append(TextSendMessage(text=event.type))
        pass

    line_bot_api.reply_message(  # reply to Line and then to the user
        event.reply_token, msg_list)
コード例 #17
0
def oracle(text):
    sqlOracle = "SELECT * FROM oracle ORDER BY RAND() LIMIT 1"
    cursorOracle = db.cursor()
    cursorOracle.execute(sqlOracle)
    resOracle = cursorOracle.fetchone()
    # cursorOracle.close()
    textS = text.split(" ")
    oracleText = "{textS} 中籤\n-------\n{num}\n{content}\n{oracle_explain}".format(
        textS=textS[0],
        num=resOracle[1],
        content=resOracle[2],
        oracle_explain=resOracle[3])
    return TextMessage(text=oracleText)
コード例 #18
0
def searchSeeSay(text):
    sqlSearchSeeSay = "SELECT * FROM seesay where `see`='{text}';".format(
        text=text)
    cursorSearchSeeSay = db.cursor()
    cursorSearchSeeSay.execute(sqlSearchSeeSay)
    res = cursorSearchSeeSay.fetchone()
    # cursorSearchSeeSay.close()
    if res:
        sayJ = json.loads(res[2])

        return TextMessage(text=sayJ[random.randint(0, len(sayJ) - 1)])
    else:
        return None
コード例 #19
0
def postback(event):
    data = json.loads(event.postback.data)
    # 群組管理員可將店家與指定群組解除綁定
    if (data.get("event") == "delete_store"
            and Group.objects.filter(
                group_id=data.get("group_id"),
                admin__user_id=event.source.user_id).exists()):
        try:
            with transaction.atomic():
                group = Group.objects.get(group_id=data["group_id"])
                store = Store.objects.get(id=data["store_id"])
                store.group.remove(group)
        except:
            reply_text = f"系統發生錯誤,無法刪除『{data['store_name']}』"
        else:
            reply_text = f"已將『{data['store_name']}』從美食清單中移除"
        finally:
            line_bot_api.reply_message(event.reply_token,
                                       TextMessage(text=reply_text))
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextMessage(text="只有群組管理員才可執行刪除!"))
コード例 #20
0
ファイル: main.py プロジェクト: latin3663/car-stock
def message_text(event):
    with psycopg2.connect(database_url) as conn:
        with conn.cursor() as cur:

            if event.type == "message":
                profile = line_bot_api.get_profile(event.source.user_id)
                messages = TextMessage(text="メッセージイベントを取得しました。\nYour ID:" +
                                       profile.user_id)

                insertUserId(conn, cur, profile)

            elif event.type == "follow":
                messages = TextMessage(text="フォローイベントを取得しました。\nYour ID:" +
                                       profile.user_id)

                insertUserId(conn, cur, profile)

    status_msg = profile.status_message
    if status_msg != "None":
        status_msg = "なし"

    line_bot_api.reply_message(event.reply_token, messages=messages)
コード例 #21
0
def handle_join(event):
    try:
        newcoming_text = "謝謝邀請我這個機器來至此群組!!我會盡力為大家服務的~(group_id = {})".format(
            event.source.group_id)
        print(newcoming_text)
    except Exception as e:
        print(e)
        newcoming_text = "謝謝邀請我這個機器來至此群組!!我會盡力為大家服務的~(error)"
        pass

    line_bot_api.reply_message(event.reply_token,
                               TextMessage(text=newcoming_text))
    print("JoinEvent =", JoinEvent)
コード例 #22
0
ファイル: app.py プロジェクト: Nienzu/line-wb-flask
def message_text(event):
    keyWordWeather = u"天氣"
    #If user don't want to know weather, echo what user input instead.And return t
    if (keyWordWeather not in event.message.text):
        line_bot_api.reply_message(event.reply_token,
                                   TextMessage(text=event.message.text))
        return
    #find the location users ask in the string of user input
    keyWordLocation = u"市縣"
    if event.message.text.find(keyWordLocation[0]) > 0:
        locationIndex = event.message.text.find(keyWordLocation[0])
    else:
        locationIndex = event.message.text.find(keyWordLocation[1])

    locationIndexStart = locationIndex - 2
    locationIndexEnd = locationIndex + 1
    location = event.message.text[locationIndexStart:locationIndexEnd]
    url = "http://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?locationName=" + location + "&elementName=Wx"
    header = {"Authorization": os.getenv('APIKEY', None)}
    origin = requests.get(url, headers=header)
    body = json.loads(origin.content)
    #Determind which prediction of time interval for the weather of the location.
    try:
        timeIntervalPredict = body['records']['location'][0]['weatherElement'][
            0]['time']
        for possibleTime in timeIntervalPredict:
            #type of time info: string -> datetime
            timeInterval = datetime.strptime(possibleTime['startTime'],
                                             "%Y-%m-%d %H:%M:%S")
            if (datetime > timeInterval):
                discription = possibleTime['parameter']['paramterName']
        reply = location + u"的天氣為" + discription
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=reply))
    except:
        line_bot_api.reply_message(
            event.reply_token,
            TextMessage(text="yo~台灣沒這個地方~\n或是請愛用繁體「臺」ex「臺南市」"))
コード例 #23
0
 def save_group_data(self, event):
     # 獲得群組資料
     group_id = event.source.group_id
     group_summary = self.line_bot_api.get_group_summary(group_id)
     group_name = group_summary.group_name
     # 將群組資料加入資料庫
     try:
         Group.objects.get_or_create(group_id=group_id,
                                     group_name=group_name)
     except:
         logger.exception(f"{group_name} database create fail!")
     else:
         self.line_bot_api.reply_message(event.reply_token,
                                         TextMessage(text="群組資料成功存進資料庫囉!"))
コード例 #24
0
 def cmd_克魯註冊(self,event:MessageEvent,cmdline:str):
     try:
         user_token = cmdline
         logging.info(f"receive cq register token {user_token}")
         line_id = query_line_id(user_token)
         if line_id != "NULL":
             self.line_bot_api.reply_message(
                 event.reply_token,
                 TextMessage(text="だが断る")
             )
             return
         
         cq_register_user(user_token, event.source.user_id)
         self.line_bot_api.reply_message(
             event.reply_token,
             TextMessage(text="done ~~ please check your client ~~ OuO")
         )
     except Exception as e:
         self.line_bot_api.reply_message(
             event.reply_token,
             TextMessage(text="だが 断る")
         )
         raise e
コード例 #25
0
def handle_text_message(event):
    text = event.message.text
    if event.source.type == 'user':
        if event.source.user_id != admin_id:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Sorry, this is private bot."))
        else:
            searchText = re.search(r'\/([A-Za-z].*) ([A-Za-z0-9].*)', text,
                                   re.I)
            command = str(searchText.group(1))
            if command == 'add':
                groupId = str(searchText.group(2))
                content = add_groupwhitelist(groupId)
                line_bot_api.reply_message(event.reply_token,
                                           TextMessage(text=content))
    else:
        searchText = re.search(r'\/([A-Za-z].*) ([A-Za-z0-9].*)', text, re.I)
        command = str(searchText.group(1))

        if command == 'bye':
            if isinstance(event.source, SourceGroup):
                line_bot_api.reply_message(event.reply_token,
                                           TextMessage(text='Leaving group'))
                line_bot_api.leave_group(event.source.group_id)
            elif isinstance(event.source, SourceRoom):
                line_bot_api.reply_message(event.reply_token,
                                           TextMessage(text='Leaving group'))
                line_bot_api.leave_room(event.source.room_id)
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextMessage(text="Bot can't leave from 1:1 chat"))

        if command == 'get':
            profile = line_bot_api.get_group_member_profile(
                event.source.group_id, event.source.user_id)
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="Hello {}".format(profile.display_name)))

        if command == 'today' or 'tomorrow' or 'yesterday':
            kelas = str(searchText.group(2)[0])
            if command == 'today':
                content = database.today_schedule(kelas)
            if command == 'tomorrow':
                content = database.tomorrow_schedule(kelas)
            if command == 'yesterday':
                content = database.yesterday_schedule(kelas)
            schedule = parse_schedule(content)
            line_bot_api.reply_message(
                event.reply_token,
                TextMessage(text="[{} {}]\n---{}".format(
                    command.upper(), kelas.upper(), schedule)))

        else:
            None
コード例 #26
0
ファイル: main.py プロジェクト: latin3663/line-bot-test
def message_text(event):
    if event.type == "message":
        profile = line_bot_api.get_profile(event.source.user_id)
        messages = TextMessage(text="メッセージイベントを取得しました。\nYour ID:" +
                               profile.user_id)
        with psycopg2.connect(DATABASE_URL) as conn:
            with conn.cursor() as cur:
                cur.execute(
                    "SELECT * FROM car_stock.line_user_id where user_id = '" +
                    profile.user_id + "'")
                userIdRow = cur.fetchone()
                # 未登録のユーザーなら登録しておく
                if userIdRow is None:
                    insertSql = "INSERT INTO car_stock.line_user_id VALUES ('" + profile.user_id + "')"
                    # INSERT文 実行
                    cur.execute(insertSql)
                    # INSERT をコミット
                    conn.commit()

    elif event.type == "follow":
        messages = TextMessage(text="フォローイベントを取得しました。\nYour ID:" +
                               profile.user_id)

    status_msg = profile.status_message
    if status_msg != "None":
        # LINEに登録されているstatus_messageが空の場合は、"なし"という文字列を代わりの値とする
        status_msg = "なし"

    # messages = TemplateSendMessage(alt_text="Buttons template",
    #                                template=ButtonsTemplate(
    #                                    thumbnail_image_url=profile.picture_url,
    #                                    title=profile.display_name,
    #                                    text=f"User Id: {profile.user_id[:5]}...\n"
    #                                         f"Status Message: {status_msg}",
    #                                    actions=[MessageAction(label="成功", text="次は何を実装しましょうか?")]))

    line_bot_api.reply_message(event.reply_token, messages=messages)
コード例 #27
0
def getSeeSay(text):
    if len(text) > 20:
        return TextMessage(text="幹你娘太長了 喵")

    see = text.split('see', 1)
    say = see[1].split('say', 1)
    if say[0] in banList:
        return TextMessage(text="主人說乖貓不能亂學 喵")
    sqlCheck = "SELECT * FROM seesay WHERE `see` = '{see}'".format(see=say[0])
    cursorCheck = db.cursor()
    cursorCheck.execute(sqlCheck)
    res = cursorCheck.fetchone()
    # cursorCheck.close()
    if res:
        sayJson = json.loads(res[2])
        sayJson.append(say[1])
        sql = "UPDATE `seesay` SET `say`='{say}' WHERE `see` = '{see}';".format(
            see=say[0], say=json.dumps(sayJson, ensure_ascii=False))

    else:
        a = []
        a.append(say[1])
        sql = "INSERT INTO `line-bot-meow`.`seesay` (`id`, `see`, `say`, `time`) VALUES (NULL, '{see}', '{say}', CURRENT_TIMESTAMP);".format(
            see=say[0], say=json.dumps(a, ensure_ascii=False))

    cursorCheck.execute(sql)
    db.commit()
    # if say[0] in seesayList:
    #     seesayList[say[0]].append(say[1])
    # else:
    #     seesayList[say[0]]=[]
    #     seesayList[say[0]].append(say[1])

    # update(say[0], seesayList[say[0]])
    # print ('save')

    return TextMessage(text="知道了 喵")
コード例 #28
0
 def test_mention(self):
     arg = {
         "type":
         "text",
         "text":
         "@example Hello, world! (love)",
         "mention":
         Mention(mentionees=[
             Mentionee(index=0, length=8, user_id="U850014438e...")
         ]),
     }
     self.assertEqual(
         self.serialize_as_dict(arg, type=self.TEXT),
         TextMessage(**arg).as_json_dict(),
     )
コード例 #29
0
def handle_join(event):
    src = event.source
    reply_token = event.reply_token
    cid = line_api_proc.source_channel_id(src)

    global command_executor

    if not isinstance(event.source, SourceUser):
        group_data = gb.get_group_by_id(cid)
        if group_data is None:
            added = gb.new_data(cid, MAIN_UID, administrator)
            msg_track.new_data(cid)

            api_reply(reply_token, [
                TextMessage(
                    text=u'群組資料註冊{}。'.format(u'成功' if added else u'失敗')),
                introduction_template()
            ], src)
        else:
            api_reply(reply_token, [
                TextMessage(text=u'群組資料已存在。'),
                TextMessage(text=command_exec.G(src, [None, None, None])),
                introduction_template()
            ], cid)
コード例 #30
0
    def send_noLine_venues(self, reply_token, noLine_venues):

        text = ""

        for venue in noLine_venues:
            text = text + venue["title"] + "\n"

        text += "目前以上展館不用排隊,歡迎民眾前往參觀。"

        text_message = TextMessage(text=text)

        template_message = self._generate_anotherQuestion_confirmTemplate()

        self.line_bot_api.reply_message(
            reply_token, messages=[text_message, template_message])