Fanerka
@Fanerka

Когда запускаю и пишу /start выдаёт ошибку? что не так в коде?

Выдаёт ошибку - 2023-03-17 09:46:42,633 (init.py:688 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 403. Description: Forbidden: bot is not a member of the channel chat" (почему он не может найти чат?)

Бот является уже администратором в канале, но выдаёт ошибку

Код:

import telebot
from telebot import types

import config

API_TOKEN = config.token 

bot = telebot.TeleBot(API_TOKEN)

GROUP_CHAT_ID = -1001822334847
user_clicks = {}

@bot.message_handler(commands=['start'])
def send_invite(message):
    # Создаем универсальную ссылку на приглашение в группу
    invite_link = bot.export_chat_invite_link(GROUP_CHAT_ID)
    # Отправляем ссылку пользователю
    bot.send_message(message.chat.id, f'Создана универсальная ссылка на приглашение в группу: {invite_link}')
    # Сохраняем информацию о том, что пользователь получил ссылку
    save_user_link_clicked(telegram_user_id=message.from_user.id)

# Обработчик перехода пользователя по ссылке
@bot.inline_handler(lambda query: query.query.startswith('join_'))
def join_group_handler(query):
    user_id = int(query.query[5:])
    bot.add_chat_member(GROUP_CHAT_ID, user_id)
    save_user_link_clicked(user_id)
    join_message = f'Пользователь @{query.from_user.username} ({query.from_user.first_name} {query.from_user.last_name}) вступил в группу!'
    bot.answer_inline_query(query.id, [types.InlineQueryResultArticle('1', 'Успех!', types.InputTextMessageContent(join_message))])

def save_user_link_clicked(telegram_user_id):
    if telegram_user_id not in user_clicks:
        user_clicks[telegram_user_id] = 1
    else:
        user_clicks[telegram_user_id] += 1

@bot.inline_handler(func=lambda inline_query: True)
def invite_link_inline_handler(inline_query):
    invite_link = bot.export_chat_invite_link(GROUP_CHAT_ID)

    results = [
        types.InlineQueryResultArticle(id='1', title='Invite to the group', input_message_content=types.InputTextMessageContent(message_text=invite_link))
    ]
    bot.answer_inline_query(inline_query.id, results)

    save_user_link_clicked(telegram_user_id=inline_query.from_user.id)


bot.polling(none_stop=True)
  • Вопрос задан
  • 302 просмотра
Пригласить эксперта
Ответы на вопрос 2
очевидно же из ошибки - бот не является участником чата. нужно добавить бота в чат
пока он не участник,он не может выполнить это
invite_link = bot.export_chat_invite_link(GROUP_CHAT_ID)
Ответ написан
@lovadev
нужно дать боту право выбора администраторов в канале. по крайней мере, с этим у меня сработало
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы