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

使用VK API批量发消息时无法捕获ApiError异常,如何处理?

解决VK API发送消息时的隐私设置错误捕获问题

你自定义的ApiError类和vk_api库实际抛出的异常不是同一个,所以根本捕获不到。正确的做法是直接使用vk_api自带的异常类:

修改步骤

  • 首先导入vk_api官方的ApiError:
    from vk_api.exceptions import ApiError
    
  • 在捕获异常时,指定捕获这个官方异常,还可以针对性处理错误代码902(即用户关闭私信的情况),避免盲目忽略所有API错误

修改后的完整代码

import pandas as pd
import vk_api
from vk_api.exceptions import ApiError  # 导入官方ApiError类

dataset = pd.read_csv("userID.csv")
allusers = dataset["109"][1:15] 
session = vk_api.VkApi(token="你的token")
vk = session.get_api()

def send_msg(user_id):
    message = "Hello!"
    msg = session.method("messages.send", {
        "user_id": user_id,
        "random_id": 0,
        "message": message
    })

for item in allusers:
    try:
        send_msg(item)
    except ApiError as e:
        if e.code == 902:
            # 仅忽略用户关闭私信的错误,继续处理下一个用户
            print(f"用户{item}关闭了私信,跳过")
        else:
            # 其他API错误打印出来,方便排查问题
            print(f"发送给用户{item}时出错: {e}")

这样修改后,程序遇到隐私设置错误时会跳过该用户,继续遍历后续用户;同时其他类型的API错误会被打印出来,不会直接忽略,方便你调试其他潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:56:11