mirror of
https://github.com/star-inc/star_yuuki_bot.git
synced 2024-09-20 14:56:19 +08:00
v6.5.1_RC3
This commit is contained in:
parent
41b1b474c0
commit
ae052f7a31
|
@ -34,6 +34,7 @@ class English:
|
||||||
"You are our blacklist. Bye~": "You are our blacklist. Bye~",
|
"You are our blacklist. Bye~": "You are our blacklist. Bye~",
|
||||||
"You had been blocked by our database.": "You had been blocked by our database.",
|
"You had been blocked by our database.": "You had been blocked by our database.",
|
||||||
"\nExtend Administrator(s)": "\nExtend Administrator(s)",
|
"\nExtend Administrator(s)": "\nExtend Administrator(s)",
|
||||||
|
"Enable(True): 1\nDisable(False): 0": "Enable(True): 1\nDisable(False): 0",
|
||||||
"The one who was been kicked:": "The one who was been kicked:",
|
"The one who was been kicked:": "The one who was been kicked:",
|
||||||
"Kick Limit.": "Kick Limit.",
|
"Kick Limit.": "Kick Limit.",
|
||||||
"Cancel Limit.": "Cancel Limit.",
|
"Cancel Limit.": "Cancel Limit.",
|
||||||
|
|
|
@ -34,6 +34,7 @@ class Traditional_Chinese:
|
||||||
"You are our blacklist. Bye~": "再見了~黑名單用戶。",
|
"You are our blacklist. Bye~": "再見了~黑名單用戶。",
|
||||||
"You had been blocked by our database.": "您目前已被本程序封鎖。",
|
"You had been blocked by our database.": "您目前已被本程序封鎖。",
|
||||||
"\nExtend Administrator(s)": "\n延伸管理員",
|
"\nExtend Administrator(s)": "\n延伸管理員",
|
||||||
|
"Enable(True): 1\nDisable(False): 0": "開啟(True): 1\n關閉(False): 0",
|
||||||
"The one who was been kicked:": "這是那個被踢的可憐孩子:",
|
"The one who was been kicked:": "這是那個被踢的可憐孩子:",
|
||||||
"Kick Limit.": "踢人次數已達上限",
|
"Kick Limit.": "踢人次數已達上限",
|
||||||
"Cancel Limit.": "取消次數已達上限",
|
"Cancel Limit.": "取消次數已達上限",
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Yuuki_Settings:
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
"name": "Yuuki",
|
"name": "Yuuki",
|
||||||
"version": "v6.5.1_RC2",
|
"version": "v6.5.1_RC3",
|
||||||
"project_url": "https://tinyurl.com/syb-yuuki",
|
"project_url": "https://tinyurl.com/syb-yuuki",
|
||||||
"man_page": "https://tinyurl.com/yuuki-manual",
|
"man_page": "https://tinyurl.com/yuuki-manual",
|
||||||
"privacy_page": "OpenSource - Licensed under MPL 2.0",
|
"privacy_page": "OpenSource - Licensed under MPL 2.0",
|
||||||
|
@ -121,14 +121,16 @@ class Yuuki:
|
||||||
print("Star Yuuki BOT - Restart Error\n\nUnknown Platform")
|
print("Star Yuuki BOT - Restart Error\n\nUnknown Platform")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
def sybGetGroupCreator(self, group):
|
@staticmethod
|
||||||
if group.creator == None:
|
def sybGetGroupCreator(group):
|
||||||
|
if group.creator is None:
|
||||||
contact = group.members[0]
|
contact = group.members[0]
|
||||||
else:
|
else:
|
||||||
contact = group.creator
|
contact = group.creator
|
||||||
return contact
|
return contact
|
||||||
|
|
||||||
def readCommandLine(self, msgs):
|
@staticmethod
|
||||||
|
def readCommandLine(msgs):
|
||||||
replymsg = ""
|
replymsg = ""
|
||||||
for msg in msgs:
|
for msg in msgs:
|
||||||
replymsg = replymsg + " " + msg
|
replymsg = replymsg + " " + msg
|
||||||
|
@ -175,7 +177,8 @@ class Yuuki:
|
||||||
|
|
||||||
self.data.updateData(self.data.getGroup(groupId), "SEGroup", group_status)
|
self.data.updateData(self.data.getGroup(groupId), "SEGroup", group_status)
|
||||||
|
|
||||||
def errorReport(self):
|
@staticmethod
|
||||||
|
def errorReport():
|
||||||
err1, err2, err3 = sys.exc_info()
|
err1, err2, err3 = sys.exc_info()
|
||||||
traceback.print_tb(err3)
|
traceback.print_tb(err3)
|
||||||
tb_info = traceback.extract_tb(err3)
|
tb_info = traceback.extract_tb(err3)
|
||||||
|
@ -199,7 +202,8 @@ class Yuuki:
|
||||||
contactInfo = False
|
contactInfo = False
|
||||||
return contactInfo
|
return contactInfo
|
||||||
|
|
||||||
def securityForWhere(self, ncMessage):
|
@staticmethod
|
||||||
|
def securityForWhere(ncMessage):
|
||||||
if ncMessage.type == OpType.NOTIFIED_UPDATE_GROUP:
|
if ncMessage.type == OpType.NOTIFIED_UPDATE_GROUP:
|
||||||
return ncMessage.param1, ncMessage.param2, ncMessage.param3
|
return ncMessage.param1, ncMessage.param2, ncMessage.param3
|
||||||
elif ncMessage.type == OpType.NOTIFIED_INVITE_INTO_GROUP:
|
elif ncMessage.type == OpType.NOTIFIED_INVITE_INTO_GROUP:
|
||||||
|
@ -232,7 +236,8 @@ class Yuuki:
|
||||||
self.data.updateData(self.data.getData("LimitInfo")["KickLimit"], userId, self.KickLimit)
|
self.data.updateData(self.data.getData("LimitInfo")["KickLimit"], userId, self.KickLimit)
|
||||||
self.data.updateData(self.data.getData("LimitInfo")["CancelLimit"], userId, self.CancelLimit)
|
self.data.updateData(self.data.getData("LimitInfo")["CancelLimit"], userId, self.CancelLimit)
|
||||||
|
|
||||||
def dictShuffle(self, dict_object, requirement=None):
|
@staticmethod
|
||||||
|
def dictShuffle(dict_object, requirement=None):
|
||||||
dict_key = [key for key in dict_object]
|
dict_key = [key for key in dict_object]
|
||||||
random.shuffle(dict_key)
|
random.shuffle(dict_key)
|
||||||
result = {}
|
result = {}
|
||||||
|
@ -287,7 +292,8 @@ class Yuuki:
|
||||||
self.sendText(groupInfo.id, _("Kick Limit."))
|
self.sendText(groupInfo.id, _("Kick Limit."))
|
||||||
return helper
|
return helper
|
||||||
|
|
||||||
def sendToWho(self, ncMessage):
|
@staticmethod
|
||||||
|
def sendToWho(ncMessage):
|
||||||
if ncMessage.message.toType == MIDType.USER:
|
if ncMessage.message.toType == MIDType.USER:
|
||||||
return ncMessage.message.from_
|
return ncMessage.message.from_
|
||||||
elif ncMessage.message.toType == MIDType.ROOM:
|
elif ncMessage.message.toType == MIDType.ROOM:
|
||||||
|
@ -416,16 +422,21 @@ class Yuuki:
|
||||||
elif ncMessage.message.toType == MIDType.ROOM:
|
elif ncMessage.message.toType == MIDType.ROOM:
|
||||||
self.getClient(self.MyMID).leaveRoom(self.Seq, ncMessage.message.to)
|
self.getClient(self.MyMID).leaveRoom(self.Seq, ncMessage.message.to)
|
||||||
elif ncMessage.message.contentType == ContentType.NONE:
|
elif ncMessage.message.contentType == ContentType.NONE:
|
||||||
|
|
||||||
msgSep = ncMessage.message.text.split(" ")
|
msgSep = ncMessage.message.text.split(" ")
|
||||||
|
|
||||||
if self.YuukiConfigs["name"] + '/Help' == ncMessage.message.text:
|
if self.YuukiConfigs["name"] + '/Help' == ncMessage.message.text:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("%s\n\t%s\n\nCommands Info:\n%s\n\nPrivacy:\n%s\n\nMore Information:\n%s\n\n%s") %
|
self.sendText(self.sendToWho(ncMessage), _("%s\n\t%s\n\nCommands Info:\n%s\n\nPrivacy:\n%s\n\nMore Information:\n%s\n\n%s") %
|
||||||
(self.YuukiConfigs["name"], self.YuukiConfigs["version"],
|
(self.YuukiConfigs["name"], self.YuukiConfigs["version"],
|
||||||
self.YuukiConfigs["man_page"], self.YuukiConfigs["privacy_page"],
|
self.YuukiConfigs["man_page"], self.YuukiConfigs["privacy_page"],
|
||||||
self.YuukiConfigs["project_url"], self.YuukiConfigs["copyright"]))
|
self.YuukiConfigs["project_url"], self.YuukiConfigs["copyright"]))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Version' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/Version' == ncMessage.message.text:
|
||||||
self.sendText(self.sendToWho(ncMessage), self.YuukiConfigs["version"])
|
self.sendText(self.sendToWho(ncMessage), self.YuukiConfigs["version"])
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/UserID' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/UserID' == ncMessage.message.text:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("LINE System UserID:\n") + ncMessage.message.from_)
|
self.sendText(self.sendToWho(ncMessage), _("LINE System UserID:\n") + ncMessage.message.from_)
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/GetAllHelper' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/GetAllHelper' == ncMessage.message.text:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -433,22 +444,24 @@ class Yuuki:
|
||||||
if ncMessage.message.from_ in GroupPrivilege:
|
if ncMessage.message.from_ in GroupPrivilege:
|
||||||
for userId in self.Connect.helper_ids:
|
for userId in self.Connect.helper_ids:
|
||||||
self.sendUser(self.sendToWho(ncMessage), userId)
|
self.sendUser(self.sendToWho(ncMessage), userId)
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Speed' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/Speed' == ncMessage.message.text:
|
||||||
Time1 = time.time()
|
Time1 = time.time()
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Testing..."))
|
self.sendText(self.sendToWho(ncMessage), _("Testing..."))
|
||||||
Time2 = time.time()
|
Time2 = time.time()
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Speed:\n %s com/s") % (Time2 - Time1,))
|
self.sendText(self.sendToWho(ncMessage), _("Speed:\n %s com/s") % (Time2 - Time1,))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/SecurityMode' == msgSep[0]:
|
elif self.YuukiConfigs["name"] + '/SecurityMode' == msgSep[0]:
|
||||||
if ncMessage.message.from_ in self.Admin:
|
if ncMessage.message.from_ in self.Admin:
|
||||||
if len(msgSep) == 2:
|
if len(msgSep) == 2:
|
||||||
try:
|
if msgSep[1].isdigit() and 1 >= int(msgSep[1]) >= 0:
|
||||||
status = int(msgSep[1])
|
self.YuukiVariable["SecurityService"] = bool(msgSep[1])
|
||||||
self.YuukiVariable["SecurityService"] = bool(status)
|
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
||||||
except:
|
else:
|
||||||
pass
|
self.sendText(self.sendToWho(ncMessage), _("Enable(True): 1\nDisable(False): 0"))
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
|
||||||
else:
|
else:
|
||||||
self.sendText(self.sendToWho(ncMessage), str(bool(self.YuukiVariable["SecurityService"])))
|
self.sendText(self.sendToWho(ncMessage), str(bool(self.YuukiVariable["SecurityService"])))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Switch' == msgSep[0]:
|
elif self.YuukiConfigs["name"] + '/Switch' == msgSep[0]:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -461,26 +474,20 @@ class Yuuki:
|
||||||
unknown_msg = []
|
unknown_msg = []
|
||||||
unknown_msgtext = ""
|
unknown_msgtext = ""
|
||||||
for code in msgSep:
|
for code in msgSep:
|
||||||
try:
|
if code.isdigit() and 3 >= int(code) >= 0:
|
||||||
if int(code) <= 3:
|
status.append(int(code))
|
||||||
status.append(int(code))
|
else:
|
||||||
else:
|
unknown_msg.append(code.strip())
|
||||||
unknown_msg.append(code.replace(" ", ""))
|
|
||||||
except:
|
|
||||||
unknown_msg.append(code.replace(" ", ""))
|
|
||||||
self.configSecurityStatus(ncMessage.message.to, status)
|
self.configSecurityStatus(ncMessage.message.to, status)
|
||||||
if unknown_msg:
|
if unknown_msg:
|
||||||
for count, msg in enumerate(unknown_msg):
|
unknown_msgtext = ", ".join(unknown_msg)
|
||||||
if count+1 == len(unknown_msg) and count != 0:
|
|
||||||
unknown_msgtext += msg
|
|
||||||
elif count != 0:
|
|
||||||
unknown_msgtext += (msg + ", ")
|
|
||||||
if status:
|
if status:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
||||||
else:
|
else:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Not Found"))
|
self.sendText(self.sendToWho(ncMessage), _("Not Found"))
|
||||||
if unknown_msgtext != "":
|
if unknown_msgtext != "":
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Notice: Unknown command line argument(s)") + "\n({})".format(unknown_msgtext))
|
self.sendText(self.sendToWho(ncMessage), _("Notice: Unknown command line argument(s)") + "\n({})".format(unknown_msgtext))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/DisableAll' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/DisableAll' == ncMessage.message.text:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -491,6 +498,7 @@ class Yuuki:
|
||||||
elif ncMessage.message.from_ in GroupPrivilege:
|
elif ncMessage.message.from_ in GroupPrivilege:
|
||||||
self.configSecurityStatus(ncMessage.message.to, [])
|
self.configSecurityStatus(ncMessage.message.to, [])
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
self.sendText(self.sendToWho(ncMessage), _("Okay"))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/ExtAdmin' == msgSep[0]:
|
elif self.YuukiConfigs["name"] + '/ExtAdmin' == msgSep[0]:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -528,6 +536,7 @@ class Yuuki:
|
||||||
self.sendText(self.sendToWho(ncMessage), status + _("\nExtend Administrator(s)"))
|
self.sendText(self.sendToWho(ncMessage), status + _("\nExtend Administrator(s)"))
|
||||||
else:
|
else:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Not Found"))
|
self.sendText(self.sendToWho(ncMessage), _("Not Found"))
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Status' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/Status' == ncMessage.message.text:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -549,6 +558,7 @@ class Yuuki:
|
||||||
self.sybGetGroupCreator(GroupInfo).displayName,
|
self.sybGetGroupCreator(GroupInfo).displayName,
|
||||||
)
|
)
|
||||||
self.sendText(self.sendToWho(ncMessage), status)
|
self.sendText(self.sendToWho(ncMessage), status)
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/GroupBackup' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/GroupBackup' == ncMessage.message.text:
|
||||||
if ncMessage.message.toType == MIDType.GROUP:
|
if ncMessage.message.toType == MIDType.GROUP:
|
||||||
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
GroupInfo = self.getClient(self.MyMID).getGroup(ncMessage.message.to)
|
||||||
|
@ -580,14 +590,17 @@ class Yuuki:
|
||||||
GroupJoined_ = self.YuukiVariable["GroupJoined"]
|
GroupJoined_ = self.YuukiVariable["GroupJoined"]
|
||||||
GroupJoined_.remove(GroupInfo.id)
|
GroupJoined_.remove(GroupInfo.id)
|
||||||
self.YuukiVariable["GroupJoined"] = GroupJoined_
|
self.YuukiVariable["GroupJoined"] = GroupJoined_
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Exit' == ncMessage.message.text:
|
elif self.YuukiConfigs["name"] + '/Exit' == ncMessage.message.text:
|
||||||
if ncMessage.message.from_ in self.Admin:
|
if ncMessage.message.from_ in self.Admin:
|
||||||
self.sendText(self.sendToWho(ncMessage), _("Exit."))
|
self.sendText(self.sendToWho(ncMessage), _("Exit."))
|
||||||
self.exit()
|
self.exit()
|
||||||
|
|
||||||
elif self.YuukiConfigs["name"] + '/Com' == msgSep[0] and len(msgSep) != 1:
|
elif self.YuukiConfigs["name"] + '/Com' == msgSep[0] and len(msgSep) != 1:
|
||||||
if ncMessage.message.from_ in self.Admin:
|
if ncMessage.message.from_ in self.Admin:
|
||||||
ComMsg = self.readCommandLine(msgSep[1:len(msgSep)])
|
ComMsg = self.readCommandLine(msgSep[1:len(msgSep)])
|
||||||
self.sendText(self.sendToWho(ncMessage), str(eval(ComMsg)))
|
self.sendText(self.sendToWho(ncMessage), str(eval(ComMsg)))
|
||||||
|
|
||||||
elif ncMessage.message.contentType == ContentType.CONTACT:
|
elif ncMessage.message.contentType == ContentType.CONTACT:
|
||||||
Catched = ncMessage.message.contentMetadata["mid"]
|
Catched = ncMessage.message.contentMetadata["mid"]
|
||||||
contactInfo = self.getContact(Catched)
|
contactInfo = self.getContact(Catched)
|
||||||
|
@ -715,7 +728,7 @@ class Yuuki:
|
||||||
NoWorkLimit = 5
|
NoWorkLimit = 5
|
||||||
|
|
||||||
fetchNum = 50
|
fetchNum = 50
|
||||||
catchedNews = []
|
cacheOperations = []
|
||||||
ncMessage = Operation()
|
ncMessage = Operation()
|
||||||
|
|
||||||
if "LastResetLimitTime" not in self.data.getData("Global"):
|
if "LastResetLimitTime" not in self.data.getData("Global"):
|
||||||
|
@ -732,7 +745,7 @@ class Yuuki:
|
||||||
|
|
||||||
if NoWork >= NoWorkLimit:
|
if NoWork >= NoWorkLimit:
|
||||||
NoWork = 0
|
NoWork = 0
|
||||||
for ncMessage in catchedNews:
|
for ncMessage in cacheOperations:
|
||||||
if ncMessage.reqSeq != -1 and ncMessage.revision > self.revision:
|
if ncMessage.reqSeq != -1 and ncMessage.revision > self.revision:
|
||||||
self.revision = ncMessage.revision
|
self.revision = ncMessage.revision
|
||||||
break
|
break
|
||||||
|
@ -740,15 +753,15 @@ class Yuuki:
|
||||||
self.revision = self.client.getLastOpRevision()
|
self.revision = self.client.getLastOpRevision()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
catchedNews = self.listen.fetchOperations(self.revision, fetchNum)
|
cacheOperations = self.listen.fetchOperations(self.revision, fetchNum)
|
||||||
except socket.timeout:
|
except socket.timeout:
|
||||||
NoWork += 1
|
NoWork += 1
|
||||||
|
|
||||||
if catchedNews:
|
if cacheOperations:
|
||||||
NoWork = 0
|
NoWork = 0
|
||||||
self.Thread_Exec(self.taskDemux, (catchedNews,))
|
self.Thread_Exec(self.taskDemux, (cacheOperations,))
|
||||||
if len(catchedNews) > 1:
|
if len(cacheOperations) > 1:
|
||||||
self.revision = max(catchedNews[-1].revision, catchedNews[-2].revision)
|
self.revision = max(cacheOperations[-1].revision, cacheOperations[-2].revision)
|
||||||
|
|
||||||
if self.data.Data != self.YuukiVariable["Sync"]:
|
if self.data.Data != self.YuukiVariable["Sync"]:
|
||||||
self.data.Data = self.YuukiVariable["Sync"]
|
self.data.Data = self.YuukiVariable["Sync"]
|
||||||
|
@ -763,7 +776,7 @@ class Yuuki:
|
||||||
except:
|
except:
|
||||||
(err1, err2, err3, ErrorInfo) = self.errorReport()
|
(err1, err2, err3, ErrorInfo) = self.errorReport()
|
||||||
try:
|
try:
|
||||||
for ncMessage in catchedNews:
|
for ncMessage in cacheOperations:
|
||||||
if ncMessage.reqSeq != -1 and ncMessage.revision > self.revision:
|
if ncMessage.reqSeq != -1 and ncMessage.revision > self.revision:
|
||||||
self.revision = ncMessage.revision
|
self.revision = ncMessage.revision
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in a new issue