bot commited on
Commit
c58486c
·
1 Parent(s): 0affc64
Files changed (1) hide show
  1. main.py +122 -0
main.py CHANGED
@@ -233,6 +233,112 @@ async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
233
  #################### 文件操作 #############################
234
 
235
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  #################### 离线任务处理 ##########################
237
  # 确认操作的回调
238
  async def handle_task_confirmation(update: Update, context: CallbackContext):
@@ -427,11 +533,27 @@ async def init_client():
427
  TG_BOT_APPLICATION.add_handler(
428
  CallbackQueryHandler(handle_task_confirmation, pattern="^confirm_task")
429
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
430
  TG_BOT_APPLICATION.add_handler(CommandHandler("start", start))
431
  TG_BOT_APPLICATION.add_handler(CommandHandler("help", help))
432
  TG_BOT_APPLICATION.add_handler(CommandHandler("quota", quota))
433
  TG_BOT_APPLICATION.add_handler(CommandHandler("emptytrash", tg_emptytrash))
434
  TG_BOT_APPLICATION.add_handler(CommandHandler("tasks", tg_show_task))
 
435
  # Message 消息处理相关的命令!
436
  TG_BOT_APPLICATION.add_handler(MessageHandler(filters.TEXT, handle_message))
437
 
 
233
  #################### 文件操作 #############################
234
 
235
 
236
+ async def tg_show_files(update: Update, context: CallbackContext):
237
+ if "file_id" not in context.user_data:
238
+ context.user_data["file_id"] = ""
239
+ files = await THUNDERX_CLIENT.file_list(
240
+ 100, context.user_data["file_id"], "", {}, {}
241
+ )
242
+ keyboard = []
243
+
244
+ if files["files"] is None:
245
+ await update.message.reply_text("❌未找到文件!!")
246
+ else:
247
+ # 为每个文件创建按钮和操作选项
248
+ for file in files["files"]:
249
+ if file["kind"].lower() == "drive#folder":
250
+ keyboard.append(
251
+ [
252
+ InlineKeyboardButton(
253
+ f"查看📁: {file['name']}",
254
+ callback_data=f"list_file:{file['id']}",
255
+ ),
256
+ InlineKeyboardButton(
257
+ f"删除",
258
+ callback_data=f"delete_file:{file['id']}",
259
+ ),
260
+ ]
261
+ )
262
+ else:
263
+ keyboard.append(
264
+ [
265
+ InlineKeyboardButton(
266
+ f"下载📄: {file['name']}",
267
+ callback_data=f"download_file:{file['id']}",
268
+ ),
269
+ InlineKeyboardButton(
270
+ f"删除",
271
+ callback_data=f"delete_file:{file['id']}",
272
+ ),
273
+ ]
274
+ )
275
+
276
+ reply_markup = InlineKeyboardMarkup(keyboard)
277
+ await update.message.reply_text(f"📋文件列表:", reply_markup=reply_markup)
278
+
279
+
280
+ async def handle_file_confirmation(update: Update, context: CallbackContext):
281
+ query = update.callback_query
282
+ await query.answer()
283
+
284
+ # 获取确认操作的类型和文件 ID
285
+ action, file_id = query.data.split(":")[0], query.data.split(":")[1]
286
+
287
+ if action == "confirm_file_delete_file":
288
+ await THUNDERX_CLIENT.delete_forever([file_id])
289
+ await query.edit_message_text(f"✅文件 {file_id} 已删除。")
290
+
291
+
292
+ async def handle_file_cancel(update: Update, context: CallbackContext):
293
+ query = update.callback_query
294
+ await query.answer()
295
+ # 获取取消操作的类型和文件 ID
296
+ action, file_id = query.data.split(":")[0], query.data.split(":")[1]
297
+ # 返回文件夹列表
298
+ await query.edit_message_text(f"操作已取消")
299
+
300
+
301
+ # 处理任务操作的回调
302
+ async def handle_file_operation(update: Update, context: CallbackContext):
303
+ query = update.callback_query
304
+ await query.answer()
305
+
306
+ # 获取操作类型和文件 ID
307
+ action, file_id = query.data.split(":")
308
+
309
+ # 需要确认的操作
310
+ if action in ["delete_file"]:
311
+ # 生成确认消息
312
+ keyboard = [
313
+ [
314
+ InlineKeyboardButton(
315
+ "确认", callback_data=f"confirm_file_{action}:{file_id}"
316
+ )
317
+ ],
318
+ [
319
+ InlineKeyboardButton(
320
+ "取消", callback_data=f"cancel_file_{action}:{file_id}"
321
+ )
322
+ ],
323
+ ]
324
+ reply_markup = InlineKeyboardMarkup(keyboard)
325
+ await query.edit_message_text(
326
+ f"你确定要{action}文件 {file_id} 吗?", reply_markup=reply_markup
327
+ )
328
+ else:
329
+ # 不需要确认的操作,直接处理
330
+ await perform_file_action(update, context, action, file_id)
331
+
332
+
333
+ async def perform_file_action(
334
+ update: Update, context: CallbackContext, action: str, file_id: str
335
+ ):
336
+ if action == "list_file":
337
+ context.user_data["file_id"] = file_id
338
+ await tg_show_files(update, context)
339
+ # await update.callback_query.edit_message_text(f"你选择了取消任务:{file_id}")
340
+
341
+
342
  #################### 离线任务处理 ##########################
343
  # 确认操作的回调
344
  async def handle_task_confirmation(update: Update, context: CallbackContext):
 
533
  TG_BOT_APPLICATION.add_handler(
534
  CallbackQueryHandler(handle_task_confirmation, pattern="^confirm_task")
535
  )
536
+
537
+ ########## 文件操作 ###############
538
+
539
+ TG_BOT_APPLICATION.add_handler(
540
+ CallbackQueryHandler(handle_file_operation, pattern="^delete_file:")
541
+ )
542
+ # 处理取消任务操作
543
+ TG_BOT_APPLICATION.add_handler(
544
+ CallbackQueryHandler(handle_file_cancel, pattern="^cancel_file")
545
+ )
546
+ # 处理确认操作(确认删除、复制等)
547
+ TG_BOT_APPLICATION.add_handler(
548
+ CallbackQueryHandler(handle_file_confirmation, pattern="^confirm_file")
549
+ )
550
+
551
  TG_BOT_APPLICATION.add_handler(CommandHandler("start", start))
552
  TG_BOT_APPLICATION.add_handler(CommandHandler("help", help))
553
  TG_BOT_APPLICATION.add_handler(CommandHandler("quota", quota))
554
  TG_BOT_APPLICATION.add_handler(CommandHandler("emptytrash", tg_emptytrash))
555
  TG_BOT_APPLICATION.add_handler(CommandHandler("tasks", tg_show_task))
556
+ TG_BOT_APPLICATION.add_handler(CommandHandler("files", tg_show_files))
557
  # Message 消息处理相关的命令!
558
  TG_BOT_APPLICATION.add_handler(MessageHandler(filters.TEXT, handle_message))
559