Задать вопрос
@hadd1s

Как исправить ошибку отправки сообщения пользователю в Telegrame от бота при заходе в канал?

написал бота, который автоматически принимает в канал и пишет пользователю первым. Протестил, все работает, дал двум потестить друзьям - у них тоже работает, а у остальных нет, всплывает данная ошибка когда клацают на кнопки в боте:
aiogram.exceptions.TelegramForbiddenError: Telegram server says Forbidden: bot can't initiate conversation with a user
не понимаю в чем проблема, помогите пожалуйста.

сам код:
from aiogram import Bot, Dispatcher, F, types
from aiogram.types import ChatJoinRequest
import logging
import contextlib
import asyncio
from markups import * 
import time
from aiogram.filters import Text


CHANNEL_ID = -********
ADMIN_ID = ******


async def approve_request(chat_join: ChatJoinRequest, bot: Bot):
    await bot.send_message(chat_id=chat_join.from_user.id, text='Здравствуйте, чтобы получить файл пройдите тест')
    time.sleep(1)
    await bot.send_message(chat_id=chat_join.from_user.id, text='Каков ваш вид деятельности', reply_markup=profesii)
    await chat_join.approve()


async def start():
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s - [%(levelname)s] - %(name)s - (%(filename)s).%(funcName)s(%(lineno)d) - %(message)s')

    bot = Bot('*************')
    dp = Dispatcher()

    dp.chat_join_request.register(approve_request, F.chat.id ==CHANNEL_ID)
    
    @dp.callback_query(Text('first'))
    async def first(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Приступим к следующему вопросу')
        time.sleep(1)
        await bot.send_message(callback.message.chat.id, 'Как часто сталкиваетесь со звукоизоляцией на объектах?', reply_markup=izol)

    @dp.callback_query(Text('second'))
    async def second(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Приступим к следующему вопросу')
        time.sleep(1)
        await bot.send_message(callback.message.chat.id, 'Как часто сталкиваетесь со звукоизоляцией на объекте?', reply_markup=izol)

    @dp.callback_query(Text('third'))
    async def third(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Приступим к следующему вопросу')
        time.sleep(1)
        await bot.send_message(callback.message.chat.id, 'Как часто сталкиваетесь со звукоизоляцией на объекте?', reply_markup=izol)

    @dp.callback_query(Text('fourth'))
    async def fourth(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Приступим к следующему вопросу')
        time.sleep(1)
        await bot.send_message(callback.message.chat.id, 'Как часто сталкиваетесь со звукоизоляцией на объекте?', reply_markup=izol)
 

    @dp.callback_query(Text('1'))
    async def odin(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Чем мы можем быть для вас полезны?', reply_markup=uslugi)


    @dp.callback_query(Text('2'))
    async def dva(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Чем мы можем быть для вас полезны?', reply_markup=uslugi)


    @dp.callback_query(Text('3'))
    async def tri(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Чем мы можем быть для вас полезны?', reply_markup=uslugi)


    @dp.callback_query(Text('4'))
    async def chetire(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Чем мы можем быть для вас полезны?', reply_markup=uslugi)


    @dp.callback_query(Text('5'))
    async def pyat(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('6'))
    async def shest(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('7'))
    async def sem(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('8'))
    async def vosem(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('9'))
    async def devyat(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('10'))
    async def desyat(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')
        
        
    @dp.callback_query(Text('11'))
    async def desyat(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    @dp.callback_query(Text('12'))
    async def desyat(callback: types.CallbackQuery):
        await bot.send_message(callback.message.chat.id, 'Вот ваша ссылка:')


    try:
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
    except Exception as ex:
        logging.error(f'[Exception] - {ex}', exc_info=True)
    finally:
        await Bot.session.close()


if __name__ == '__main__':
    with contextlib.suppress(KeyboardInterrupt, SystemExit):
        asyncio.run(start())


markups:

from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup

first = InlineKeyboardButton(text='Дизайнер', callback_data='first')
second = InlineKeyboardButton(text='Строитель', callback_data='second')
third = InlineKeyboardButton(text='Прораб/Компания', callback_data='third')
fourth = InlineKeyboardButton(text='Частное лицо', callback_data='fourth')
profesii = InlineKeyboardMarkup(inline_keyboard=[
    [first, second],
    [third, fourth],
])

pervaya = InlineKeyboardButton(text='Никогда', callback_data='1')
vtoraya = InlineKeyboardButton(text='До 3-х раз в год', callback_data='2')
tretiy = InlineKeyboardButton(text='До 10 раз в году', callback_data='3')
chetire = InlineKeyboardButton(text='Более 10', callback_data='4')
izol = InlineKeyboardMarkup(inline_keyboard=[
    [pervaya, vtoraya],
    [tretiy, chetire]
])

montaj = InlineKeyboardButton(text='Монтаж звукоизоляции', callback_data='5')
postavka = InlineKeyboardButton(text='Поставка материалов по звукоизоляции', callback_data='6')
resheniya = InlineKeyboardButton(text='Консультации и подбор решений', callback_data='7')
dizain = InlineKeyboardButton(text='Аудит дизайн-проекта', callback_data='8')
kompleksnoe = InlineKeyboardButton(text='Комплексное решение вопроса', callback_data='9')
dekor = InlineKeyboardButton(text='Декоративные материалы', callback_data='10')
shef = InlineKeyboardButton(text='Шеф монтаж', callback_data='11')
akust = InlineKeyboardButton(text='Акустические расчёты', callback_data='12')
uslugi = InlineKeyboardMarkup(inline_keyboard=[
    [montaj],
    [postavka],
    [resheniya],
    [dizain],
    [kompleksnoe],
    [akust],
    [dekor],
    [shef]
])
  • Вопрос задан
  • 834 просмотра
Подписаться 1 Сложный 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
@tbwanderer
Мне кажется я с этим сталкивался.
Проблема в том, что человек сам должен разрешить/написать боту первым.
Иначе вылезает ошибка. Возможно Вам удастся это сделать. Удачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Wanted. Москва
от 60 000 до 120 000 ₽
Wanted. Санкт-Петербург
До 200 000 ₽