You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord机器人Excel匹配问题:仅检测A2单元格,需匹配A1-A500

修正后的Discord机器人Excel匹配代码

原代码存在几个核心问题:循环范围没覆盖A1、每次循环不匹配就直接执行添加并中断遍历、重复加载工作簿浪费资源,以下是修正后的实现:

import discord
import openpyxl

client = discord.Client()

@client.event
async def on_message(message):
    if message.content.startswith("$text"):
        # 仅加载一次Excel工作簿,避免重复IO操作
        wb = openpyxl.load_workbook('test.xlsx')
        sheet = wb['Sheet1']
        user_id = f"#{message.author.id}"
        is_found = False
        
        # 遍历A1到A500所有单元格(range左闭右开,所以写501)
        for i in range(1, 501):
            cell_value = sheet[f"A{i}"].value
            if cell_value == user_id:
                await message.channel.send(f"{i}: I have it")
                is_found = True
                break  # 找到匹配项后跳出循环
        
        # 遍历完所有目标单元格都没匹配,才执行添加操作
        if not is_found:
            next_row = sheet.max_row + 1
            sheet[f"A{next_row}"].value = user_id
            wb.save('test.xlsx')
            await message.channel.send("Information has been generated")

关键修改说明:

  • 调整循环范围为range(1,501),确保覆盖A1到A500的所有单元格
  • 新增is_found标记变量,只有遍历完所有目标单元格确认无匹配时,才执行添加用户ID的逻辑
  • 移除else分支内重复加载工作簿的冗余代码,仅在开头加载一次工作簿,提升运行效率
  • 将用户ID提前赋值给变量,避免重复拼接字符串

内容的提问来源于stack exchange,提问作者kkkmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:01:21