yangtb24 commited on
Commit
ec22734
·
verified ·
1 Parent(s): deb0829

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -8
app.py CHANGED
@@ -270,15 +270,17 @@ async def handleTelegramUpdate(update):
270
  return
271
 
272
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
273
- await handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat)
 
274
  return
275
  else:
276
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
 
277
  await handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat)
278
  return
279
  if isGroupChat:
280
  if chatId not in GROUP_SETTINGS:
281
- GROUP_SETTINGS[chatId] = {'aiEnabled': True, 'prefix': None}
282
  print(f'群组 {chatId} 首次检测到,默认启用 AI。')
283
 
284
  groupSettings = GROUP_SETTINGS[chatId]
@@ -290,12 +292,12 @@ async def handleTelegramUpdate(update):
290
 
291
  messageContent = userMessage[len(prefix):].strip() if prefix else userMessage
292
  if messageContent:
293
- await processAiMessage(chatId, messageContent, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName)
294
  else:
295
  if userMessage == UNBAN_PHRASE:
296
  await unbanUser(chatId, fromUserId)
297
  else:
298
- await processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName)
299
 
300
  def parseCommand(userMessage):
301
  command = userMessage.split(' ')[0]
@@ -340,7 +342,44 @@ async def handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat):
340
  await sendTelegramMessage(chatId, '已重置您的个人设置。')
341
  return
342
 
343
- async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  if fromUserId in BANNED_USERS and BANNED_USERS[fromUserId] > datetime.now():
345
  remaining_time = BANNED_USERS[fromUserId] - datetime.now()
346
  minutes = int(remaining_time.total_seconds() / 60)
@@ -354,8 +393,16 @@ async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUser
354
  return
355
 
356
  history = chatHistories.get(chatId, [])
357
- userTemp = USER_SETTINGS.get(fromUserId, {}).get('temperature', DEFAULT_TEMP)
358
- userPromptIndex = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
 
 
 
 
 
 
 
 
359
  currentPrompt = PROMPT_TEMPLATES.get(userPromptIndex, "")
360
 
361
  user_last_active = USER_LAST_ACTIVE.get(fromUserId, None)
@@ -482,8 +529,12 @@ def getHelpMessage():
482
  /disableai - 在群组中禁用AI回复。
483
  /setprefix <prefix> - 设置群组中触发AI回复的前缀,例如:/setprefix @bot。
484
  /getprefix - 获取当前群组的触发前缀。
 
 
 
 
485
 
486
- 私聊指令 (在群组中也可以使用):
487
  /settemp <温度值> - 设置AI回复的温度 (0-2),例如:/settemp 1.0。
488
  /gettemp - 获取当前AI回复的温度。
489
  /resetuser - 重置你的个人设置。
 
270
  return
271
 
272
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
273
+ # 群组中,私聊指令只用于设置群组的
274
+ await handleGroupCommand(chatId, userMessage, fromUserId, isGroupChat)
275
  return
276
  else:
277
  if userMessage.startswith('/settemp ') or userMessage.startswith('/promat ') or command in ['gettemp', 'getpromat', 'resetuser']:
278
+ # 私聊时,使用用户的设置
279
  await handlePrivateCommand(chatId, userMessage, fromUserId, isGroupChat)
280
  return
281
  if isGroupChat:
282
  if chatId not in GROUP_SETTINGS:
283
+ GROUP_SETTINGS[chatId] = {'aiEnabled': True, 'prefix': None, 'temperature': DEFAULT_TEMP, 'prompt_index': CURRENT_PROMPT_INDEX} # 初始化群组设置
284
  print(f'群组 {chatId} 首次检测到,默认启用 AI。')
285
 
286
  groupSettings = GROUP_SETTINGS[chatId]
 
292
 
293
  messageContent = userMessage[len(prefix):].strip() if prefix else userMessage
294
  if messageContent:
295
+ await processAiMessage(chatId, messageContent, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat) # 传递 isGroupChat
296
  else:
297
  if userMessage == UNBAN_PHRASE:
298
  await unbanUser(chatId, fromUserId)
299
  else:
300
+ await processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat) # 传递 isGroupChat
301
 
302
  def parseCommand(userMessage):
303
  command = userMessage.split(' ')[0]
 
342
  await sendTelegramMessage(chatId, '已重置您的个人设置。')
343
  return
344
 
345
+ async def handleGroupCommand(chatId, userMessage, fromUserId, isGroupChat):
346
+ command = parseCommand(userMessage)
347
+ if userMessage.startswith('/settemp '):
348
+ try:
349
+ temp = float(userMessage[len('/settemp '):].strip())
350
+ if 0 <= temp <= 2:
351
+ GROUP_SETTINGS.setdefault(chatId, {}).update({'temperature': temp})
352
+ await sendTelegramMessage(chatId, f'已设置群组AI回复温度为: {temp}')
353
+ else:
354
+ await sendTelegramMessage(chatId, '温度设置无效,请输入0到2之间的数字。')
355
+ except ValueError:
356
+ await sendTelegramMessage(chatId, '温度设置无效,请输入0到2之间的数字。')
357
+ return
358
+ if command == 'gettemp':
359
+ temp = GROUP_SETTINGS.get(chatId, {}).get('temperature', DEFAULT_TEMP)
360
+ await sendTelegramMessage(chatId, f'当前群组AI回复温度为: {temp}')
361
+ return
362
+ if userMessage.startswith('/promat '):
363
+ try:
364
+ index = int(userMessage[len('/promat '):].strip())
365
+ if index in PROMPT_TEMPLATES:
366
+ GROUP_SETTINGS.setdefault(chatId, {}).update({'prompt_index': index})
367
+ await sendTelegramMessage(chatId, f'已切换到群组提示词 {index}。')
368
+ else:
369
+ await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
370
+ except ValueError:
371
+ await sendTelegramMessage(chatId, '提示词索引无效。请使用 /getpromat 查看可用的索引。')
372
+ return
373
+ if command == 'getpromat':
374
+ index = GROUP_SETTINGS.get(chatId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
375
+ await sendTelegramMessage(chatId, f'当前群组使用的提示词索引是: {index}')
376
+ return
377
+ if command == 'resetuser':
378
+ # 群组中不应该重置用户的私聊设置
379
+ await sendTelegramMessage(chatId, '群组设置中,该指令无效。')
380
+ return
381
+
382
+ async def processAiMessage(chatId, userMessage, fromUserId, message_id, fromUserFirstName, fromUserLastName, fromUserName, isGroupChat):
383
  if fromUserId in BANNED_USERS and BANNED_USERS[fromUserId] > datetime.now():
384
  remaining_time = BANNED_USERS[fromUserId] - datetime.now()
385
  minutes = int(remaining_time.total_seconds() / 60)
 
393
  return
394
 
395
  history = chatHistories.get(chatId, [])
396
+
397
+ if isGroupChat:
398
+ # 从群组设置获取温度和提示词
399
+ userTemp = GROUP_SETTINGS.get(chatId, {}).get('temperature', DEFAULT_TEMP)
400
+ userPromptIndex = GROUP_SETTINGS.get(chatId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
401
+ else:
402
+ # 从用户设置获取温度和提示词
403
+ userTemp = USER_SETTINGS.get(fromUserId, {}).get('temperature', DEFAULT_TEMP)
404
+ userPromptIndex = USER_SETTINGS.get(fromUserId, {}).get('prompt_index', CURRENT_PROMPT_INDEX)
405
+
406
  currentPrompt = PROMPT_TEMPLATES.get(userPromptIndex, "")
407
 
408
  user_last_active = USER_LAST_ACTIVE.get(fromUserId, None)
 
529
  /disableai - 在群组中禁用AI回复。
530
  /setprefix <prefix> - 设置群组中触发AI回复的前缀,例如:/setprefix @bot。
531
  /getprefix - 获取当前群组的触发前缀。
532
+ /settemp <温度值> - 设置群组AI回复的温度 (0-2),例如:/settemp 1.0。
533
+ /gettemp - 获取当前群组AI回复的温度。
534
+ /promat <index> - 切换群组提示词,例如: /promat 0, 1, 2。
535
+ /getpromat - 获取当前群组使用的提示词索引。
536
 
537
+ 私聊指令 (在群组中也可以使用,但是设置的是私聊的):
538
  /settemp <温度值> - 设置AI回复的温度 (0-2),例如:/settemp 1.0。
539
  /gettemp - 获取当前AI回复的温度。
540
  /resetuser - 重置你的个人设置。