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

是否可以通过Telegram bot设置用户黑名单禁止其使用对应功能?

Telegram转发Bot黑名单设置方案

完全可以通过新增黑名单校验逻辑解决垃圾消息骚扰问题,具体实现步骤如下:

1. 准备黑名单存储结构

优先选择TG用户唯一ID作为拉黑依据(比用户名稳定不会变更),可以用本地JSON文件、轻量数据库SQLite存储黑名单列表,不需要复杂的服务部署。

2. 新增消息前置校验逻辑

在原有消息转发逻辑之前新增黑名单判断步骤:

  • 每次收到用户消息时,先提取发送者的用户ID
  • 用该ID匹配黑名单存储列表
  • 命中黑名单直接终止处理流程,可选择返回禁用提示或者直接忽略消息

3. 新增管理员操作命令

仅允许指定的管理员账号操作黑名单,建议预留3个基础命令:

  • /ban <用户ID>:将指定用户ID加入黑名单
  • /unban <用户ID>:将指定用户ID移出黑名单
  • /list_ban:查看当前所有拉黑的用户ID

如果你用的是Python的python-telegram-bot库,可以参考核心实现代码:

import json

# 初始化加载本地黑名单
def load_blacklist():
    try:
        with open("blacklist.json", "r", encoding="utf-8") as f:
            return set(json.load(f))
    except FileNotFoundError:
        return set()

# 全局变量存储黑名单,管理员ID替换为你自己的TG用户ID
blacklist = load_blacklist()
ADMIN_UID = 123456789

# 消息处理主逻辑
async def message_handler(update, context):
    sender_uid = update.effective_user.id
    # 黑名单校验
    if sender_uid in blacklist:
        await update.message.reply_text("你已被禁止使用该机器人")
        return
    # 原有消息转发逻辑放在此处
    # ...

# 拉黑命令处理
async def ban_cmd(update, context):
    # 仅管理员可操作
    if update.effective_user.id != ADMIN_UID:
        return
    if not context.args:
        await update.message.reply_text("格式错误,正确用法:/ban 要拉黑的用户ID")
        return
    target_uid = int(context.args[0])
    blacklist.add(target_uid)
    # 持久化保存到本地文件
    with open("blacklist.json", "w", encoding="utf-8") as f:
        json.dump(list(blacklist), f)
    await update.message.reply_text(f"已成功拉黑用户{target_uid}")

拓展优化建议

  • 可以额外新增消息关键词过滤、发送频率限制逻辑,短时间内发送多条消息的账号自动拉入黑名单,进一步降低人工维护成本
  • 如果垃圾消息量很大,可以对接第三方反垃圾接口自动识别违规内容自动拉黑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:54:02