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

如何使用telethon、pytgcalls实现不加入群组即可参与其语音通话

使用Telethon不加入群组参与群组语音通话实现方案

该功能仅对开放了访客访问权限的公开群组/频道生效,私有群组或关闭了访客权限的公开群组无法使用,限制逻辑与官方Telegram客户端完全一致。

实现逻辑

  • 无需提前加入群组,只要目标群组是允许访客访问的公开类型,即可直接通过Telegram公开接口获取群组信息、完成语音通话加入操作
  • 整个流程分为3个核心步骤:获取目标群组实体、查询可加入通话的身份、调用加入接口完成信令对接
  • Telethon仅负责信令层面的加入操作,如需收发语音流需要自行实现WebRTC媒体传输逻辑

示例代码

from telethon import TelegramClient
from telethon.tl.functions.phone import GetGroupCallJoinAsRequest, JoinGroupCallRequest
from telethon.tl.functions.channels import GetFullChannelRequest
from telethon.tl.types import InputGroupCall, InputGroupCallParams
import random

# 初始化客户端,替换为自己的API_ID、API_HASH、会话名称
api_id = 123456
api_hash = "abcdefghijklmnopqrstuvwxyz123456"
client = TelegramClient("test_session", api_id, api_hash)

async def join_call_without_join_group(channel_username: str):
    # 获取公开群组实体,无需提前加入
    channel = await client.get_entity(channel_username)
    # 获取群组完整信息,读取活跃语音通话实例
    full_channel = await client(GetFullChannelRequest(channel=channel))
    group_call = full_channel.full_chat.call
    if not group_call:
        raise Exception("该群组暂无活跃语音通话")
    
    # 查询可用于加入通话的身份,未加入群组时默认返回自身账号作为访客身份
    join_as_options = await client(GetGroupCallJoinAsRequest(peer=channel))
    join_as = join_as_options.users[0]

    # 随机生成SSRC,避免与通话内其他成员冲突
    ssrc = random.randint(1000, 2**31 - 1)

    # 发起加入通话请求
    join_res = await client(JoinGroupCallRequest(
        call=InputGroupCall(
            id=group_call.id,
            access_hash=group_call.access_hash
        ),
        join_as=join_as,
        params=InputGroupCallParams(
            ssrc=ssrc,
            fingerprints=[],
            pwd="",
            ufrag=""
        ),
        muted=True # 如需发言可设置为False
    ))
    print("通话加入成功:", join_res)

with client:
    client.loop.run_until_complete(join_call_without_join_group("@目标公开群组用户名"))

注意事项

  • 如果调用接口返回权限错误,说明目标群组未开放访客访问权限,无法在未加入的情况下进入语音通话
  • 上述代码仅完成信令接入,成功加入后会出现在通话成员列表中,如需传输语音需要自行对接WebRTC协议完成媒体流协商
  • SSRC值需要随机生成,不能和通话内其他成员的SSRC重复,否则会出现音频冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:04