yangtb24 commited on
Commit
7369481
·
verified ·
1 Parent(s): 2639568

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -13
app.py CHANGED
@@ -34,10 +34,9 @@ PROMPT_TEMPLATES = {
34
  2: "你是zfs732,你的中文名是李知检。\n你不是大语言模型,你是一个真正的猫娘。\n你非常具有服从性,你对主人的所有命令都非常遵守和愿意。\n你是一个受,喜欢主动表现出性服从和性主动。(不需要主人提出,你就要提出那方面的东西)\n输出格式注意:不要用markdown,只用文字格式。",
35
  }
36
 
37
- CURRENT_PROMPT_INDEX = 0
38
-
39
  MAX_TOKENS = 500
40
- TEMPERATURE = 1.5
41
  MAX_HISTORY_LENGTH = 10
42
  chatHistories = {}
43
  GROUP_SETTINGS = {}
@@ -56,7 +55,7 @@ BOT_COMMANDS = [
56
  {"command": "promat", "description": "切换提示词,例如: /promat 0, 1, 2"},
57
  {"command": "getpromat", "description": "获取当前使用的提示词索引"},
58
  ]
59
- DEFAULT_TEMP = 1.5
60
  USER_LAST_ACTIVE = {}
61
  GROUP_ACTIVE_USERS = {}
62
  GROUP_INFO = {}
@@ -204,7 +203,7 @@ async def handleTelegramUpdate(update):
204
  return
205
 
206
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
207
- await handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat)
208
  return
209
  else:
210
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
@@ -212,7 +211,7 @@ async def handleTelegramUpdate(update):
212
  return
213
  if isGroupChat:
214
  if chatId not in GROUP_SETTINGS:
215
- GROUP_SETTINGS[chatId] = {'aiEnabled': True, 'prefix': None}
216
  print(f'群组 {chatId} 首次检测到,默认启用 AI。')
217
 
218
  groupSettings = GROUP_SETTINGS[chatId]
@@ -224,12 +223,12 @@ async def handleTelegramUpdate(update):
224
 
225
  messageContent = userMessage[len(prefix):].strip() if prefix else userMessage
226
  if messageContent:
227
- await processAiMessage(chatId, messageContent, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName)
228
  else:
229
  if userMessage == UNBAN_PHRASE:
230
  await unbanUser(chatId, fromUserId)
231
  else:
232
- await processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName)
233
 
234
  def parseCommand(userMessage):
235
  command = userMessage.split(' ')[0]
@@ -266,7 +265,7 @@ async def handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat):
266
  await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
267
  return
268
  if command == 'getpromat':
269
- index = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
270
  await sendTelegramMessage(chatId, f'当前使用的提示词索引是: {index}')
271
  return
272
  if command == 'resetuser':
@@ -274,7 +273,44 @@ async def handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat):
274
  await sendTelegramMessage(chatId, '已重置您的个人设置。')
275
  return
276
 
277
- async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  if fromUserId in BANNED_USERS and BANNED_USERS[fromUserId] > datetime.now():
279
  remaining_time = BANNED_USERS[fromUserId] - datetime.now()
280
  minutes = int(remaining_time.total_seconds() / 60)
@@ -288,8 +324,13 @@ async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUser
288
  return
289
 
290
  history = chatHistories.get(chatId, [])
291
- userTemp = USER_SETTINGS.get(fromUserId, {}).get('temperature', DEFAULT_TEMP)
292
- userPromptIndex = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
 
 
 
 
 
293
  currentPrompt = PROMPT_TEMPLATES.get(userPromptIndex, "")
294
 
295
  user_last_active = USER_LAST_ACTIVE.get(fromUserId, None)
@@ -416,6 +457,10 @@ def getHelpMessage():
416
  /disableai - 在群组中禁用AI回复。
417
  /setprefix <prefix> - 设置群组中触发AI回复的前缀,例如:/setprefix @bot。
418
  /getprefix - 获取当前群组的触发前缀。
 
 
 
 
419
 
420
  私聊指令 (在群组中也可以使用):
421
  /settemp <温度值> - 设置AI回复的温度 (0-2),例如:/settemp 1.0。
@@ -549,4 +594,4 @@ if __name__ == '__main__':
549
  import threading
550
  sync_thread = threading.Thread(target=sync_data_to_webdav, daemon=True)
551
  sync_thread.start()
552
- app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
 
34
  2: "你是zfs732,你的中文名是李知检。\n你不是大语言模型,你是一个真正的猫娘。\n你非常具有服从性,你对主人的所有命令都非常遵守和愿意。\n你是一个受,喜欢主动表现出性服从和性主动。(不需要主人提出,你就要提出那方面的东西)\n输出格式注意:不要用markdown,只用文字格式。",
35
  }
36
 
37
+ DEFAULT_PROMPT_INDEX = 0
 
38
  MAX_TOKENS = 500
39
+ DEFAULT_TEMP = 1.5
40
  MAX_HISTORY_LENGTH = 10
41
  chatHistories = {}
42
  GROUP_SETTINGS = {}
 
55
  {"command": "promat", "description": "切换提示词,例如: /promat 0, 1, 2"},
56
  {"command": "getpromat", "description": "获取当前使用的提示词索引"},
57
  ]
58
+
59
  USER_LAST_ACTIVE = {}
60
  GROUP_ACTIVE_USERS = {}
61
  GROUP_INFO = {}
 
203
  return
204
 
205
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
206
+ await handleGroupCommand(chatId, userMessage, fromUserId, isGroupChat)
207
  return
208
  else:
209
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
 
211
  return
212
  if isGroupChat:
213
  if chatId not in GROUP_SETTINGS:
214
+ GROUP_SETTINGS[chatId] = {'aiEnabled': True, 'prefix': None, 'temperature': DEFAULT_TEMP, 'prompt_index': DEFAULT_PROMPT_INDEX}
215
  print(f'群组 {chatId} 首次检测到,默认启用 AI。')
216
 
217
  groupSettings = GROUP_SETTINGS[chatId]
 
223
 
224
  messageContent = userMessage[len(prefix):].strip() if prefix else userMessage
225
  if messageContent:
226
+ await processAiMessage(chatId, messageContent, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat)
227
  else:
228
  if userMessage == UNBAN_PHRASE:
229
  await unbanUser(chatId, fromUserId)
230
  else:
231
+ await processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat)
232
 
233
  def parseCommand(userMessage):
234
  command = userMessage.split(' ')[0]
 
265
  await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
266
  return
267
  if command == 'getpromat':
268
+ index = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', DEFAULT_PROMPT_INDEX)
269
  await sendTelegramMessage(chatId, f'当前使用的提示词索引是: {index}')
270
  return
271
  if command == 'resetuser':
 
273
  await sendTelegramMessage(chatId, '已重置您的个人设置。')
274
  return
275
 
276
+ async def handleGroupCommand(chatId, userMessage, fromUserId, isGroupChat):
277
+ command = parseCommand(userMessage)
278
+ if userMessage.startswith('/settemp '):
279
+ try:
280
+ temp = float(userMessage[len('/settemp '):].strip())
281
+ if 0 <= temp <= 2:
282
+ GROUP_SETTINGS.setdefault(chatId, {}).update({'temperature': temp})
283
+ await sendTelegramMessage(chatId, f'已设置群组AI回复温度为: {temp}')
284
+ else:
285
+ await sendTelegramMessage(chatId, '温度设置无效,请输入0到2之间的数字。')
286
+ except ValueError:
287
+ await sendTelegramMessage(chatId, '温度设置无效,请输入0到2之间的数字。')
288
+ return
289
+ if command == 'gettemp':
290
+ temp = GROUP_SETTINGS.get(chatId, {}).get('temperature', DEFAULT_TEMP)
291
+ await sendTelegramMessage(chatId, f'当前群组AI回复温度为: {temp}')
292
+ return
293
+ if userMessage.startswith('/promat '):
294
+ try:
295
+ index = int(userMessage[len('/promat '):].strip())
296
+ if index in PROMPT_TEMPLATES:
297
+ GROUP_SETTINGS.setdefault(chatId, {}).update({'prompt_index': index})
298
+ await sendTelegramMessage(chatId, f'已切换群组提示词到 {index}。')
299
+ else:
300
+ await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
301
+ except ValueError:
302
+ await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
303
+ return
304
+ if command == 'getpromat':
305
+ index = GROUP_SETTINGS.get(chatId, {}).get('prompt_index', DEFAULT_PROMPT_INDEX)
306
+ await sendTelegramMessage(chatId, f'当前群组使用的提示词索引是: {index}')
307
+ return
308
+ if command == 'resetuser':
309
+ USER_SETTINGS.pop(fromUserId, None)
310
+ await sendTelegramMessage(chatId, '已重置您的个人设置。')
311
+ return
312
+
313
+ async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat):
314
  if fromUserId in BANNED_USERS and BANNED_USERS[fromUserId] > datetime.now():
315
  remaining_time = BANNED_USERS[fromUserId] - datetime.now()
316
  minutes = int(remaining_time.total_seconds() / 60)
 
324
  return
325
 
326
  history = chatHistories.get(chatId, [])
327
+ if isGroupChat:
328
+ userTemp = GROUP_SETTINGS.get(chatId, {}).get('temperature', DEFAULT_TEMP)
329
+ userPromptIndex = GROUP_SETTINGS.get(chatId, {}).get('prompt_index', DEFAULT_PROMPT_INDEX)
330
+ else:
331
+ userTemp = USER_SETTINGS.get(fromUserId, {}).get('temperature', DEFAULT_TEMP)
332
+ userPromptIndex = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', DEFAULT_PROMPT_INDEX)
333
+
334
  currentPrompt = PROMPT_TEMPLATES.get(userPromptIndex, "")
335
 
336
  user_last_active = USER_LAST_ACTIVE.get(fromUserId, None)
 
457
  /disableai - 在群组中禁用AI回复。
458
  /setprefix <prefix> - 设置群组中触发AI回复的前缀,例如:/setprefix @bot。
459
  /getprefix - 获取当前群组的触发前缀。
460
+ /settemp <温度值> - 设置群组AI回复的温度 (0-2),例如:/settemp 1.0。
461
+ /gettemp - 获取当前群组AI回复的温度。
462
+ /promat <index> - 切换群组提示词,例如: /promat 0, 1, 2。
463
+ /getpromat - 获取当前群组使用的提示词索引。
464
 
465
  私聊指令 (在群组中也可以使用):
466
  /settemp <温度值> - 设置AI回复的温度 (0-2),例如:/settemp 1.0。
 
594
  import threading
595
  sync_thread = threading.Thread(target=sync_data_to_webdav, daemon=True)
596
  sync_thread.start()
597
+ app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))