11import re
2- from nonebot .adapters .onebot .v11 import MessageSegment ,GroupMessageEvent ,Event , PokeNotifyEvent , NotifyEvent , PrivateMessageEvent , PrivateMessageEvent , GroupIncreaseNoticeEvent
3- from nonebot import on_message , on_notice
2+ from nonebot .adapters .onebot .v11 import MessageSegment ,GroupMessageEvent ,Event , PokeNotifyEvent , NotifyEvent , PrivateMessageEvent , PrivateMessageEvent , GroupIncreaseNoticeEvent , GroupRequestEvent
3+ from nonebot import on_message , on_notice , on_request
44from pathlib import Path
55import nonebot
66from nonebot .rule import is_type
@@ -287,10 +287,15 @@ async def getusername(a, event, data):
287287 name = result ['nickname' ]
288288 return name
289289 except nonebot .adapters .onebot .v11 .exception .ActionFailed :
290- logger .opt (colors = True ).error (
291- f"<yellow>错误!</yellow> <blue>无法获取</blue> <red>群成员</red> { a } <red>不存在</red>"
292- )
293- return None
290+ try :
291+ result = await bot .get_stranger_info (user_id = event .user_id )
292+ name = name ['nickname' ]
293+ return name
294+ except nonebot .adapters .onebot .v11 .exception .ActionFailed :
295+ logger .opt (colors = True ).error (
296+ f"<yellow>错误!</yellow> <blue>无法获取</blue> <red>群成员</red> { a } <red>不存在</red>"
297+ )
298+ return None
294299 else :
295300 result = await bot .get_group_member_info (group_id = event .group_id ,user_id = event .user_id )
296301 name = result ['card' ]
@@ -622,16 +627,22 @@ async def parse_string(s,event,data):
622627
623628 return result
624629
630+ event_rule = ['[戳一戳]' ,'[入群通知]' ,'[加群请求]' ]
631+
625632def poke (event : Event ):
626633 return isinstance (event , PokeNotifyEvent )
627634
628635def groupadd (event : Event ):
629636 return isinstance (event , GroupIncreaseNoticeEvent )
630637
638+ def groupwantadd (event : Event ):
639+ return isinstance (event , GroupRequestEvent )
640+
631641grouprequest = on_message (rule = is_type (GroupMessageEvent ))
632642privaterequest = on_message (rule = is_type (PrivateMessageEvent ))
633643pokeevent = on_notice (rule = poke )
634644groupaddevent = on_notice (rule = groupadd )
645+ groupwantaddevent = on_request (rule = groupwantadd )
635646
636647@grouprequest .handle ()
637648async def _ (event : GroupMessageEvent ):
@@ -642,7 +653,7 @@ async def _(event: GroupMessageEvent):
642653 result = parse_string (s ,event ,qua )
643654 for key in result :
644655 match_data = re .search (rf'^{ key } $' , qua )
645- if match_data :
656+ if match_data and key not in event_rule :
646657 result = result [key ]
647658 data = match_data .groups ()
648659 ans = ""
@@ -669,7 +680,7 @@ async def _(event: PrivateMessageEvent):
669680 result = parse_string (s ,event ,qua )
670681 for key in result :
671682 match_data = re .search (rf'^{ key } $' , qua )
672- if match_data :
683+ if match_data and key not in event_rule :
673684 result = result [key ]
674685 data = match_data .groups ()
675686 ans = ""
@@ -689,44 +700,60 @@ async def _(event: PrivateMessageEvent):
689700
690701@pokeevent .handle ()
691702async def _ (event : NotifyEvent ):
692- if event .group_id == 809613000 :
693- file_path = 'dicpro.txt'
694-
695- s = parse_file (file_path )
696- s = s .replace ('$' , '$' )
697-
698- result = await parse_string (s ,event ,data = None )
699- if "[戳一戳]" in result :
700- result = result ["[戳一戳]" ]
701- ans = ""
702- if len (result ) != 0 :
703- for i in range (len (result )):
704- key = result [i ]
705- match = re .search (r'^$(\w+)\s+(.+)$$' , key )
706- data = ""
707- if match :
708- func_name , param = match .groups ()
709- ans += await my_function (func_name , param , event ,data )
710- await pokeevent .send (ans )
703+ file_path = 'dicpro.txt'
704+ s = parse_file (file_path )
705+ s = s .replace ('$' , '$' )
706+ result = await parse_string (s ,event ,data = None )
707+ if "[戳一戳]" in result :
708+ result = result ["[戳一戳]" ]
709+ ans = ""
710+ if len (result ) != 0 :
711+ for i in range (len (result )):
712+ key = result [i ]
713+ match = re .search (r'^$(\w+)\s+(.+)$$' , key )
714+ data = ""
715+ if match :
716+ func_name , param = match .groups ()
717+ ans += await my_function (func_name , param , event ,data )
718+ await pokeevent .send (ans )
711719
712720@groupaddevent .handle ()
713721async def _ (event : GroupIncreaseNoticeEvent ):
714- if event .group_id == 809613000 :
715- file_path = 'dicpro.txt'
722+ file_path = 'dicpro.txt'
723+ s = parse_file (file_path )
724+ s = s .replace ('$' , '$' )
716725
717- s = parse_file (file_path )
718- s = s .replace ('$' , '$' )
726+ result = await parse_string (s ,event ,data = None )
727+ if "[入群通知]" in result :
728+ result = result ["[入群通知]" ]
729+ ans = ""
730+ if len (result ) != 0 :
731+ for i in range (len (result )):
732+ key = result [i ]
733+ match = re .search (r'^$(\w+)\s+(.+)$$' , key )
734+ data = ""
735+ if match :
736+ func_name , param = match .groups ()
737+ ans += await my_function (func_name , param , event ,data )
738+ await pokeevent .send (ans )
719739
720- result = await parse_string (s ,event ,data = None )
721- if "[入群通知]" in result :
722- result = result ["[入群通知]" ]
723- ans = ""
724- if len (result ) != 0 :
725- for i in range (len (result )):
726- key = result [i ]
727- match = re .search (r'^$(\w+)\s+(.+)$$' , key )
728- data = ""
729- if match :
730- func_name , param = match .groups ()
731- ans += await my_function (func_name , param , event ,data )
732- await pokeevent .send (ans )
740+ @groupwantaddevent .handle ()
741+ async def _ (event : GroupRequestEvent ):
742+ file_path = 'dicpro.txt'
743+
744+ s = parse_file (file_path )
745+ s = s .replace ('$' , '$' )
746+
747+ result = await parse_string (s ,event ,data = None )
748+ if "[加群请求]" in result :
749+ result = result ["[加群请求]" ]
750+ ans = ""
751+ if len (result ) != 0 :
752+ for i in range (len (result )):
753+ key = result [i ]
754+ match = re .search (r'^$(\w+)\s+(.+)$$' , key )
755+ data = ""
756+ if match :
757+ func_name , param = match .groups ()
758+ ans += await my_function (func_name , param , event ,data )
759+ await groupwantaddevent .send (ans )
0 commit comments