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

开发带Tkinter界面的BSC代币狙击Bot时web3库异常求助

问题:BSC代币狙击Bot的web3库导入错误问题

我正在开发一款适用于Binance Smart Chain(BSC)的代币狙击Bot,搭配Tkinter界面实现功能设置,编写了对应代码。但运行时明明已安装web3库,却仍提示未安装,且找不到合适的替代库,请求解决该问题。

以下是我的实现代码:

import tkinter as tk
import requests
import web3
import time

API_ENDPOINT = "https://bsc-api.binance.org"
CONTRACT_ADDRESS = "0x1234567890abcdef"

def get_current_price():
    url = f"{API_ENDPOINT}/v1/ticker/price?symbol={CONTRACT_ADDRESS}"
    response = requests.get(url)
    price = float(response.json()["price"])
    return price

def snipe_token(threshold):
    # Connect to the Binance Smart Chain
    w3 = web3.Web3(web3.HTTPProvider("https://bsc-dataseed.binance.org:443"))

    # Get the current price of the token
    price = get_current_price()

    # If the price is below the threshold, make the purchase
    if price < threshold:
        # Unlock the account
        w3.eth.defaultAccount = "acc adress"
        w3.personal.unlockAccount(w3.eth.defaultAccount, "password")

        # Load the contract and make the purchase
        contract = w3.eth.contract(address=CONTRACT_ADDRESS, abi=abi)
        tx_hash = contract.functions.buy().transact()

        # Wait for the transaction to be mined
        tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)

        # Print the transaction details
        print(f"Successfully purchased token for {price} BNB")
        print(f"Transaction hash: {tx_hash}")
    else:
        print(f"Price is above threshold ({threshold} BNB)")

def sell_token(price):
    # Connect to the Binance Smart Chain
    w3 = web3.Web3(web3.HTTPProvider("https://bsc-dataseed.binance.org:443"))

    # Unlock the account
    w3.eth.defaultAccount = "0x1234567890abcdef"
    w3.personal.unlockAccount(w3.eth.defaultAccount, "password123")

    # Load the contract and make the sale
    contract = w3.eth.contract(address=CONTRACT_ADDRESS, abi=abi)
    tx_hash = contract.functions.sell(price).transact()

    # Wait for the transaction to be mined
    tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)

    # Print the transaction details
    print(f"Successfully sold token for {price} BNB")
    print(f"Transaction hash: {tx_hash}")

def check_price():
    # Get the current price of the token
    price = get_current_price()

    # Print the current price
    print(f"Current price: {price} BNB")
    return price

# Create the main window
root = tk.Tk()
root.title("Token Sniper")

# Create the threshold entry field
threshold_label = tk.Label(root, text="Snipe threshold (BNB):")
threshold_entry = tk.Entry(root)

# Create the start button
def start_clicked():
    # Get the snipe threshold from the entry field
    threshold = float(threshold_entry.get())

    # Run the snipe loop
    while True:
        # Check the current price of the token
        price = check_price()

        # Set the sell threshold (in BNB)
        sell_threshold = 0.02

        # If the price is above the sell threshold, sell the token
        if price > sell_threshold:
            sell_token(price)
        else:
            snipe_token(threshold)

        # Wait one minute before checking again
        time.sleep(1)
start_button = tk.Button(root, text="Start", command=start_clicked)

# Arrange the widgets in the window
threshold_label.grid(row=0, column=0)
threshold_entry.grid(row=0, column=1)
start_button.grid(row=1, column=0, columnspan=2)

# Run the main loop
root.mainloop()
解决方案
  • 检查环境一致性:确认运行代码的Python环境与安装web3的环境一致。用pip list查看当前环境的包列表,确认web3已安装;若使用虚拟环境,需先激活环境再运行代码。
  • 修正导入方式:将web3的导入语句改为:
    from web3 import Web3, HTTPProvider
    
    并将代码中所有web3.Web3替换为Web3,web3.HTTPProvider替换为HTTPProvider,这是web3库更规范的使用方式,能避免部分导入错误。
  • 重装web3库:若环境没问题仍报错,执行以下命令重装指定稳定版本:
    pip uninstall web3 -y
    pip install web3==6.12.0
    
  • 排查依赖冲突:用pip check命令检查当前环境的依赖冲突,修复冲突的包,避免因依赖版本不兼容导致的导入问题。
额外代码优化提示
  • 代码中abi变量未定义,需补充对应代币合约的ABI才能正常调用合约方法。
  • start_clicked中的while True循环会阻塞Tkinter主事件循环,导致界面卡死,建议改用root.after(1000, task)实现定时任务。
  • 硬编码账户地址和密码存在严重安全风险,建议改用环境变量或加密存储方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:00:54