diff options
| author | Kyomotoi <1172294279@qq.com> | 2021-04-15 23:57:04 +0800 | 
|---|---|---|
| committer | Kyomotoi <1172294279@qq.com> | 2021-04-15 23:57:04 +0800 | 
| commit | c289b7b3c85200915f79d4e6dcf16123a4b594a8 (patch) | |
| tree | be07059cd4fdb24b06a6ac22b886300305d86de5 | |
| parent | 2349350ba8db8a572a49e931891eaa42a4207df4 (diff) | |
| download | ATRI-c289b7b3c85200915f79d4e6dcf16123a4b594a8.tar.gz ATRI-c289b7b3c85200915f79d4e6dcf16123a4b594a8.tar.bz2 ATRI-c289b7b3c85200915f79d4e6dcf16123a4b594a8.zip | |
✨🎨💩
新增:以图搜图(完善)
新增:Service中on_regex
修复:codacy部分错误
| -rw-r--r-- | ATRI/plugins/essential.py | 17 | ||||
| -rw-r--r-- | ATRI/plugins/funny.py | 69 | ||||
| -rw-r--r-- | ATRI/service.py | 12 | ||||
| -rw-r--r-- | ATRI/utils/translate.py | 16 | 
4 files changed, 92 insertions, 22 deletions
| diff --git a/ATRI/plugins/essential.py b/ATRI/plugins/essential.py index 0fbed92..833ce01 100644 --- a/ATRI/plugins/essential.py +++ b/ATRI/plugins/essential.py @@ -56,15 +56,14 @@ async def shutdown() -> None:      try:          shutil.rmtree(PLUGIN_INFO_DIR)          logger.debug("成功!") -    except: +    except Exception:          repo = (              '清理插件信息失败',              '请前往 ATRI/data/service/services 下',              '将 services 整个文件夹删除'          ) -        logger.error(repo)          time.sleep(10) -        pass +        raise Exception(repo)  @driver.on_bot_connect @@ -342,8 +341,12 @@ recall_event = sv.on_notice()  @recall_event.handle()  async def _recall_event(bot: Bot, event: GroupRecallNoticeEvent) -> None: +    try: +        repo = await bot.get_msg(message_id=event.message_id) +    except: +        return +          group = event.group_id -    repo = await bot.get_msg(message_id=event.message_id)      repo = str(repo["message"])      check = await coolq_code_check(repo, group=group)      if not check: @@ -364,8 +367,12 @@ async def _recall_event(bot: Bot, event: GroupRecallNoticeEvent) -> None:  @recall_event.handle()  async def _rec(bot: Bot, event: FriendRecallNoticeEvent) -> None: +    try: +        repo = await bot.get_msg(message_id=event.message_id) +    except: +        return +          user = event.user_id -    repo = await bot.get_msg(message_id=event.message_id)      repo = str(repo["message"])      check = await coolq_code_check(repo, user)      if not check: diff --git a/ATRI/plugins/funny.py b/ATRI/plugins/funny.py index 3d7becd..d630092 100644 --- a/ATRI/plugins/funny.py +++ b/ATRI/plugins/funny.py @@ -1,12 +1,18 @@ +import json +import re  import asyncio  from pathlib import Path  from random import choice, randint  from nonebot.adapters.cqhttp import Bot, MessageEvent, GroupMessageEvent +from nonebot.adapters.cqhttp.message import Message, MessageSegment  from ATRI.service import Service as sv  from ATRI.utils.limit import is_too_exciting  from ATRI.rule import is_in_service +from ATRI.utils.request import post_bytes +from ATRI.utils.translate import to_simple_string +from ATRI.exceptions import RequestTimeOut  __doc__ = """ @@ -146,11 +152,58 @@ async def _fake_msg(bot: Bot, event: GroupMessageEvent) -> None:      await bot.send_group_forward_msg(group_id=group, messages=node) -__doc__ = """ -不知道吃什么? -权限组:所有人 -用法: -  今天{时段}吃什么 -示例: -  今天中午吃什么 -""" +EAT_URL = "https://wtf.hiigara.net/api/run/{}" + +eat_wat = sv.on_regex(r"[今|明|后|大后]天(.*?)吃什么", rule=is_in_service('今天吃什么')) + +@eat_wat.handle() +async def _eat(bot: Bot, event: MessageEvent) -> None: +    msg = str(event.message).strip() +    user = event.user_id +    user_n = event.sender.nickname +    arg = re.findall(r"[今|明|后|大后]天(.*?)吃什么", msg)[0] +    nd = re.match(r"[今|明|后|大后][天]", msg)[0] +     +    if arg == "中午": +        a = f"LdS4K6/{randint(0, 999999)}" +        url = EAT_URL.format(a) +        params = {"event": "ManualRun"} +        try: +            data = json.loads(await post_bytes(url, params)) +        except RequestTimeOut: +            raise RequestTimeOut('Request failed!') +         +        text = to_simple_string(data['text']).replace('今天', nd) +        get_a = re.search(r"非常(.*?)的", text)[0] +        result = f"> {MessageSegment.at(user)}\n" + text.replace(get_a, '') +     +    elif arg == "晚上": +        a = f"KaTMS/{randint(0, 999999)}" +        url = EAT_URL.format(a) +        params = {"event": "ManualRun"} +        try: +            data = json.loads(await post_bytes(url, params)) +        except RequestTimeOut: +            raise RequestTimeOut('Request failed!') +         +        text = to_simple_string(data['text']).replace('今天', '') +        result = f"> {MessageSegment.at(user)}\n" + text +     +    else: +        rd = randint(1, 10) +        if rd == 5: +            result = "吃我吧 ❤" +        else: +            a = f"JJr1hJ/{randint(0, 999999)}" +            url = EAT_URL.format(a) +            params = {"event": "ManualRun"} +            try: +                data = json.loads(await post_bytes(url, params)) +            except RequestTimeOut: +                raise RequestTimeOut('Request failed!') +             +            text = to_simple_string(data['text']).replace('今天', nd) +            get_a = re.match(r"(.*?)的智商", text)[0] +            result = f"> {MessageSegment.at(user)}\n" + text.replace(get_a, f'{user_n}的智商') +     +    await eat_wat.finish(Message(result))
\ No newline at end of file diff --git a/ATRI/service.py b/ATRI/service.py index 5205bd2..0267fcd 100644 --- a/ATRI/service.py +++ b/ATRI/service.py @@ -1,4 +1,5 @@  import os +import re  import json  from pathlib import Path  from datetime import datetime @@ -15,8 +16,9 @@ from typing import (  )  from nonebot.matcher import Matcher  from nonebot.permission import Permission +from nonebot.plugin import on_message  from nonebot.typing import T_State, T_Handler, T_RuleChecker -from nonebot.rule import Rule, command, keyword +from nonebot.rule import Rule, command, keyword, regex  from .log import logger as log  from .config import Config @@ -238,6 +240,14 @@ class Service:          _load_service_config(list(keywords)[0], docs)          return cls.on_message(keyword(*keywords) & rule, **kwargs) +    @classmethod +    def on_regex(cls, +                 pattern: str, +                 flags: Union[int, re.RegexFlag] = 0, +                 rule: Optional[Union[Rule, T_RuleChecker]] = None, +                 **kwargs) -> Type[Matcher]: +        return on_message(regex(pattern, flags) & rule, **kwargs) +          class NetworkPost:          URL = ( diff --git a/ATRI/utils/translate.py b/ATRI/utils/translate.py index 905c84b..d1fb83c 100644 --- a/ATRI/utils/translate.py +++ b/ATRI/utils/translate.py @@ -2,31 +2,31 @@ SIMPLE     = "万与丑专业丛东丝丢两严丧个丬丰临为丽举么义乌  TRADITION  = "萬與醜專業叢東絲丟兩嚴喪個爿豐臨為麗舉麼義烏樂喬習鄉書買亂爭於虧雲亙亞產畝親褻嚲億僅從侖倉儀們價眾優夥會傴傘偉傳傷倀倫傖偽佇體餘傭僉俠侶僥偵側僑儈儕儂俁儔儼倆儷儉債傾傯僂僨償儻儐儲儺兒兌兗黨蘭關興茲養獸囅內岡冊寫軍農塚馮衝決況凍淨淒涼淩減湊凜幾鳳鳧憑凱擊氹鑿芻劃劉則剛創刪別剗剄劊劌剴劑剮劍剝劇勸辦務勱動勵勁勞勢勳猛勩勻匭匱區醫華協單賣盧鹵臥衛卻巹廠廳曆厲壓厭厙廁廂厴廈廚廄廝縣參靉靆雙發變敘疊葉號歎嘰籲後嚇呂嗎唚噸聽啟吳嘸囈嘔嚦唄員咼嗆嗚詠哢嚨嚀噝吒噅鹹呱響啞噠嘵嗶噦嘩噲嚌噥喲嘜嗊嘮啢嗩唕喚呼嘖嗇囀齧囉嘽嘯噴嘍嚳囁嗬噯噓嚶囑嚕劈囂謔團園囪圍圇國圖圓聖壙場阪壞塊堅壇壢壩塢墳墜壟壟壚壘墾坰堊墊埡墶壋塏堖塒塤堝墊垵塹墮壪牆壯聲殼壺壼處備復夠頭誇夾奪奩奐奮獎奧妝婦媽嫵嫗媯姍薑婁婭嬈嬌孌娛媧嫻嫿嬰嬋嬸媼嬡嬪嬙嬤孫學孿寧寶實寵審憲宮寬賓寢對尋導壽將爾塵堯尷屍盡層屭屜屆屬屢屨嶼歲豈嶇崗峴嶴嵐島嶺嶽崠巋嶨嶧峽嶢嶠崢巒嶗崍嶮嶄嶸嶔崳嶁脊巔鞏巰幣帥師幃帳簾幟帶幀幫幬幘幗冪襆幹並廣莊慶廬廡庫應廟龐廢廎廩開異棄張彌弳彎彈強歸當錄彠彥徹徑徠禦憶懺憂愾懷態慫憮慪悵愴憐總懟懌戀懇惡慟懨愷惻惱惲悅愨懸慳憫驚懼慘懲憊愜慚憚慣湣慍憤憒願懾憖怵懣懶懍戇戔戲戧戰戩戶紮撲扡執擴捫掃揚擾撫拋摶摳掄搶護報擔擬攏揀擁攔擰撥擇掛摯攣掗撾撻挾撓擋撟掙擠揮撏撈損撿換搗據撚擄摑擲撣摻摜摣攬撳攙擱摟攪攜攝攄擺搖擯攤攖撐攆擷擼攛擻攢敵斂數齋斕鬥斬斷無舊時曠暘曇晝曨顯晉曬曉曄暈暉暫曖劄術樸機殺雜權條來楊榪傑極構樅樞棗櫪梘棖槍楓梟櫃檸檉梔柵標棧櫛櫳棟櫨櫟欄樹棲樣欒棬椏橈楨檔榿橋樺檜槳樁夢檮棶檢欞槨櫝槧欏橢樓欖櫬櫚櫸檟檻檳櫧橫檣櫻櫫櫥櫓櫞簷檁歡歟歐殲歿殤殘殞殮殫殯毆毀轂畢斃氈毿氌氣氫氬氳彙漢汙湯洶遝溝沒灃漚瀝淪滄渢溈滬濔濘淚澩瀧瀘濼瀉潑澤涇潔灑窪浹淺漿澆湞溮濁測澮濟瀏滻渾滸濃潯濜塗湧濤澇淶漣潿渦溳渙滌潤澗漲澀澱淵淥漬瀆漸澠漁瀋滲溫遊灣濕潰濺漵漊潷滾滯灩灄滿瀅濾濫灤濱灘澦濫瀠瀟瀲濰潛瀦瀾瀨瀕灝滅燈靈災燦煬爐燉煒熗點煉熾爍爛烴燭煙煩燒燁燴燙燼熱煥燜燾煆糊溜愛爺牘犛牽犧犢強狀獷獁猶狽麅獮獰獨狹獅獪猙獄猻獫獵獼玀豬貓蝟獻獺璣璵瑒瑪瑋環現瑲璽瑉玨琺瓏璫琿璡璉瑣瓊瑤璦璿瓔瓚甕甌電畫暢佘疇癤療瘧癘瘍鬁瘡瘋皰屙癰痙癢瘂癆瘓癇癡癉瘮瘞瘺癟癱癮癭癩癬癲臒皚皺皸盞鹽監蓋盜盤瞘眥矓著睜睞瞼瞞矚矯磯礬礦碭碼磚硨硯碸礪礱礫礎硜矽碩硤磽磑礄確鹼礙磧磣堿镟滾禮禕禰禎禱禍稟祿禪離禿稈種積稱穢穠穭稅穌穩穡窮竊竅窯竄窩窺竇窶豎競篤筍筆筧箋籠籩築篳篩簹箏籌簽簡籙簀篋籜籮簞簫簣簍籃籬籪籟糴類秈糶糲粵糞糧糝餱緊縶糸糾紆紅紂纖紇約級紈纊紀紉緯紜紘純紕紗綱納紝縱綸紛紙紋紡紵紖紐紓線紺絏紱練組紳細織終縐絆紼絀紹繹經紿綁絨結絝繞絰絎繪給絢絳絡絕絞統綆綃絹繡綌綏絛繼綈績緒綾緓續綺緋綽緔緄繩維綿綬繃綢綯綹綣綜綻綰綠綴緇緙緗緘緬纜緹緲緝縕繢緦綞緞緶線緱縋緩締縷編緡緣縉縛縟縝縫縗縞纏縭縊縑繽縹縵縲纓縮繆繅纈繚繕繒韁繾繰繯繳纘罌網羅罰罷羆羈羥羨翹翽翬耮耬聳恥聶聾職聹聯聵聰肅腸膚膁腎腫脹脅膽勝朧腖臚脛膠脈膾髒臍腦膿臠腳脫腡臉臘醃膕齶膩靦膃騰臏臢輿艤艦艙艫艱豔艸藝節羋薌蕪蘆蓯葦藶莧萇蒼苧蘇檾蘋莖蘢蔦塋煢繭荊薦薘莢蕘蓽蕎薈薺蕩榮葷滎犖熒蕁藎蓀蔭蕒葒葤藥蒞蓧萊蓮蒔萵薟獲蕕瑩鶯蓴蘀蘿螢營縈蕭薩蔥蕆蕢蔣蔞藍薊蘺蕷鎣驀薔蘞藺藹蘄蘊藪槁蘚虜慮虛蟲虯蟣雖蝦蠆蝕蟻螞蠶蠔蜆蠱蠣蟶蠻蟄蛺蟯螄蠐蛻蝸蠟蠅蟈蟬蠍螻蠑螿蟎蠨釁銜補襯袞襖嫋褘襪襲襏裝襠褌褳襝褲襇褸襤繈襴見觀覎規覓視覘覽覺覬覡覿覥覦覯覲覷觴觸觶讋譽謄訁計訂訃認譏訐訌討讓訕訖訓議訊記訒講諱謳詎訝訥許訛論訩訟諷設訪訣證詁訶評詛識詗詐訴診詆謅詞詘詔詖譯詒誆誄試詿詩詰詼誠誅詵話誕詬詮詭詢詣諍該詳詫諢詡譸誡誣語誚誤誥誘誨誑說誦誒請諸諏諾讀諑誹課諉諛誰諗調諂諒諄誶談誼謀諶諜謊諫諧謔謁謂諤諭諼讒諮諳諺諦謎諞諝謨讜謖謝謠謗諡謙謐謹謾謫譾謬譚譖譙讕譜譎讞譴譫讖穀豶貝貞負貟貢財責賢敗賬貨質販貪貧貶購貯貫貳賤賁貰貼貴貺貸貿費賀貽賊贄賈賄貲賃賂贓資賅贐賕賑賚賒賦賭齎贖賞賜贔賙賡賠賧賴賵贅賻賺賽賾贗讚贇贈贍贏贛赬趙趕趨趲躉躍蹌蹠躒踐躂蹺蹕躚躋踴躊蹤躓躑躡蹣躕躥躪躦軀車軋軌軒軑軔轉軛輪軟轟軲軻轤軸軹軼軤軫轢軺輕軾載輊轎輈輇輅較輒輔輛輦輩輝輥輞輬輟輜輳輻輯轀輸轡轅轄輾轆轍轔辭辯辮邊遼達遷過邁運還這進遠違連遲邇逕跡適選遜遞邐邏遺遙鄧鄺鄔郵鄒鄴鄰鬱郤郟鄶鄭鄆酈鄖鄲醞醱醬釅釃釀釋裏钜鑒鑾鏨釓釔針釘釗釙釕釷釺釧釤鈒釩釣鍆釹鍚釵鈃鈣鈈鈦鈍鈔鍾鈉鋇鋼鈑鈐鑰欽鈞鎢鉤鈧鈁鈥鈄鈕鈀鈺錢鉦鉗鈷缽鈳鉕鈽鈸鉞鑽鉬鉭鉀鈿鈾鐵鉑鈴鑠鉛鉚鈰鉉鉈鉍鈹鐸鉶銬銠鉺銪鋏鋣鐃銍鐺銅鋁銱銦鎧鍘銖銑鋌銩銛鏵銓鉿銚鉻銘錚銫鉸銥鏟銃鐋銨銀銣鑄鐒鋪鋙錸鋱鏈鏗銷鎖鋰鋥鋤鍋鋯鋨鏽銼鋝鋒鋅鋶鐦鐧銳銻鋃鋟鋦錒錆鍺錯錨錡錁錕錩錫錮鑼錘錐錦鍁錈錇錟錠鍵鋸錳錙鍥鍈鍇鏘鍶鍔鍤鍬鍾鍛鎪鍠鍰鎄鍍鎂鏤鎡鏌鎮鎛鎘鑷鐫鎳鎿鎦鎬鎊鎰鎔鏢鏜鏍鏰鏞鏡鏑鏃鏇鏐鐔钁鐐鏷鑥鐓鑭鐠鑹鏹鐙鑊鐳鐶鐲鐮鐿鑔鑣鑞鑲長門閂閃閆閈閉問闖閏闈閑閎間閔閌悶閘鬧閨聞闥閩閭闓閥閣閡閫鬮閱閬闍閾閹閶鬩閿閽閻閼闡闌闃闠闊闋闔闐闒闕闞闤隊陽陰陣階際陸隴陳陘陝隉隕險隨隱隸雋難雛讎靂霧霽黴靄靚靜靨韃鞽韉韝韋韌韍韓韙韞韜韻頁頂頃頇項順須頊頑顧頓頎頒頌頏預顱領頗頸頡頰頲頜潁熲頦頤頻頮頹頷頴穎顆題顒顎顓顏額顳顢顛顙顥纇顫顬顰顴風颺颭颮颯颶颸颼颻飀飄飆飆飛饗饜飣饑飥餳飩餼飪飫飭飯飲餞飾飽飼飿飴餌饒餉餄餎餃餏餅餑餖餓餘餒餕餜餛餡館餷饋餶餿饞饁饃餺餾饈饉饅饊饌饢馬馭馱馴馳驅馹駁驢駔駛駟駙駒騶駐駝駑駕驛駘驍罵駰驕驊駱駭駢驫驪騁驗騂駸駿騏騎騍騅騌驌驂騙騭騤騷騖驁騮騫騸驃騾驄驏驟驥驦驤髏髖髕鬢魘魎魚魛魢魷魨魯魴魺鮁鮃鯰鱸鮋鮓鮒鮊鮑鱟鮍鮐鮭鮚鮳鮪鮞鮦鰂鮜鱠鱭鮫鮮鮺鯗鱘鯁鱺鰱鰹鯉鰣鰷鯀鯊鯇鮶鯽鯒鯖鯪鯕鯫鯡鯤鯧鯝鯢鯰鯛鯨鯵鯴鯔鱝鰈鰏鱨鯷鰮鰃鰓鱷鰍鰒鰉鰁鱂鯿鰠鼇鰭鰨鰥鰩鰟鰜鰳鰾鱈鱉鰻鰵鱅鰼鱖鱔鱗鱒鱯鱤鱧鱣鳥鳩雞鳶鳴鳲鷗鴉鶬鴇鴆鴣鶇鸕鴨鴞鴦鴒鴟鴝鴛鴬鴕鷥鷙鴯鴰鵂鴴鵃鴿鸞鴻鵐鵓鸝鵑鵠鵝鵒鷳鵜鵡鵲鶓鵪鶤鵯鵬鵮鶉鶊鵷鷫鶘鶡鶚鶻鶿鶥鶩鷊鷂鶲鶹鶺鷁鶼鶴鷖鸚鷓鷚鷯鷦鷲鷸鷺鸇鷹鸌鸏鸛鸘鹺麥麩黃黌黶黷黲黽黿鼂鼉鞀鼴齇齊齏齒齔齕齗齟齡齙齠齜齦齬齪齲齷龍龔龕龜誌製谘隻裡係範鬆冇嚐嘗鬨麵準鐘彆閒乾儘臟拚" -def to_tradition_string(str): +def to_tradition_string(s: str):      output_str_list = [] -    str_len = len(str) +    str_len = len(s)      for i in range(str_len): -        found_index = SIMPLE.find(str[i]) +        found_index = SIMPLE.find(s[i])          if not (found_index == -1):              output_str_list.append(TRADITION[found_index])          else: -            output_str_list.append(str[i]) +            output_str_list.append(s[i])      return "".join(output_str_list) -def to_simple_string(str): +def to_simple_string(s: str):      output_str_list = [] -    str_len = len(str) +    str_len = len(s)      for i in range(str_len): -        found_index = TRADITION.find(str[i]) +        found_index = TRADITION.find(s[i])          if not (found_index == -1):              output_str_list.append(SIMPLE[found_index])          else: -            output_str_list.append(str[i]) +            output_str_list.append(s[i])      return "".join(output_str_list)
\ No newline at end of file | 
