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

如何修复Telegram机器人自动发群消息时的参数缺失错误?

解决Telegram机器人自动发消息的参数缺失错误

问题原因

你当前的buy()和sell()函数是为Telegram机器人的命令交互场景设计的(比如用户发送指令后触发),所以需要update和context参数来获取对话上下文。但在handle_event中自动调用时,没有传递这两个参数,因此触发TypeError。

解决方案

核心思路是分离消息发送逻辑与Telegram交互逻辑:直接使用机器人实例向指定群组发送消息,不再依赖update和context参数。

步骤1:初始化Telegram机器人实例

先确保你已经获取了机器人Token和目标群组ID,初始化全局可访问的Bot对象:

from telegram import Bot

# 替换为你的机器人Token和群组ID
TELEGRAM_BOT_TOKEN = "your_bot_token_here"
TARGET_CHAT_ID = "your_group_chat_id_here"

# 初始化机器人
bot = Bot(token=TELEGRAM_BOT_TOKEN)

步骤2:重构消息发送函数

去掉依赖update和context的函数,改为直接接收交易数据,调用Bot的send_message方法发消息:

def send_buy_notification(eth_amount, token_amount):
    """发送买入通知到指定群组"""
    message = f"Buy!!!!\n💴: {eth_amount}\nToken Bought: {token_amount}\n"
    bot.send_message(chat_id=TARGET_CHAT_ID, text=message)

def send_sell_notification(eth_amount, token_amount):
    """发送卖出通知到指定群组"""
    message = f"Sell!!!!\n💴: {eth_amount}\nToken Sold: {token_amount}\n"
    bot.send_message(chat_id=TARGET_CHAT_ID, text=message)

步骤3:修改事件处理函数

在handle_event中计算好格式化后的金额,直接调用新的通知函数,同时修正原条件判断的逻辑漏洞:

def handle_event(event):
    # 从事件中提取数据
    amount0In = event['args']['amount0In']
    amount1Out = event['args']['amount1Out']
    amount1In = event['args']['amount1In']
    amount0Out = event['args']['amount0Out']

    # 格式化金额(转换为可读单位)
    decimals = 10**18
    if amount0In != 0 and amount1Out != 0:
        token_sold = amount0In / decimals
        eth_got = amount1Out / decimals
        print(f"Token Sold {token_sold}, and eth {eth_got}")
        send_sell_notification(eth_got, token_sold)
    else:
        token_bought = amount0Out / decimals
        eth_spent = amount1In / decimals
        print(f"Token Bought {token_bought}, and eth {eth_spent}")
        send_buy_notification(eth_spent, token_bought)

关键改进点

  • 移除全局变量:通过函数传参传递交易数据,避免全局变量导致的状态混乱
  • 修正条件判断:原if amount0In and amount1Out !=0存在逻辑漏洞,改为明确判断amount0In !=0,避免数字0被误判为布尔False
  • 解耦逻辑:将Telegram消息发送逻辑独立,不再依赖交互上下文,适合自动触发场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:01