如何用Telegram Bot(aiogram/telebot)自动创建群组并生成邀请链接
解决方案:用aiogram自动创建群组并生成邀请链接
要实现自动创建唯一新群组并发送邀请链接的功能,你可以利用aiogram提供的create_supergroup方法自动创建超级群,再结合create_chat_invite_link生成专属链接。以下是完整实现代码及关键说明:
完整代码示例
from aiogram import Dispatcher, Bot from aiogram.types import Message from datetime import datetime, timedelta # 假设你已经完成bot和dp的初始化: # bot = Bot(token="你的BotToken") # dp = Dispatcher(bot) @dp.message_handler(commands=['creategroup']) async def cmd_create_group(message: Message): # 1. 生成唯一群组名称(避免重复) unique_group_title = f"专属群组_{message.from_user.id}_{datetime.now().strftime('%Y%m%d%H%M%S')}" # 2. 自动创建超级群 new_group = await bot.create_supergroup(title=unique_group_title) group_chat_id = new_group.id # 3. 创建带有效期和人数限制的邀请链接 expire_time = datetime.now() + timedelta(days=1) invite_link = await bot.create_chat_invite_link( chat_id=group_chat_id, expire_date=int(expire_time.timestamp()), # 需转换为整数时间戳 member_limit=1 # 限制仅1人可通过链接加入 ) # 4. 向用户发送邀请链接 await message.reply(f"已创建专属群组,邀请链接:\n{invite_link.invite_link}\n链接1天内有效,仅支持1人加入")
关键修改说明
- 自动创建群组:使用
bot.create_supergroup()方法直接创建超级群,无需手动提前创建。该方法返回Chat对象,从中可获取自动生成的chat_id。 - 唯一群名称:通过结合用户ID和当前时间戳生成群名称,确保每个群组唯一,避免重复创建。
- 修复时间戳参数:原代码中
expire_date.timestamp是方法引用,需改为expire_time.timestamp()并转换为整数,否则会触发API参数错误。 - 直接回复用户:生成链接后通过
message.reply()将结果发送给发起命令的用户。
注意事项
- Bot权限:确保你的Bot账号拥有创建超级群的权限(默认情况下Bot具备该权限,若被限制需联系Telegram支持)。
- 普通群创建:若需创建普通群组而非超级群,可使用
bot.create_new_chat()方法,但必须指定一个用户ID(如发起命令的用户)作为群成员,示例:new_group = await bot.create_new_chat(title=unique_group_title, user_id=message.from_user.id) - 群名称限制:Telegram群组名称最长为255字符,需确保生成的名称符合该限制。
内容的提问来源于stack exchange,提问作者WinnieNotThePooh
相关产品推荐
相关产品推荐

