Как отправить пост в телеграмм канал через бота?

Всем привет. Т.к. нет возможности в ТГ добавлять свои записи участникам канала, решил запилить бота...

Смотрел различные уроки и прочее. Как мне сделать так, чтобы заполнив форму боту, он этот пост отправил в паблик? Должны быть всего 2 поля. Картинка и описание. После заполнения, сразу же отправлялся пост не в бд, а в паблик)

Все к чему смог придти по урокам, это разработал форму и смог отправить ее в бд и оттуда выгружать в этот же пост целой лентой... в этом же боте).

    class FSMAdmin(StatesGroup): #состояния добавления поста
  photo = State()
  name = State()

#Начало диалога загрузки нового пунка меню
#@dp.message_handler(commands='разместить', state=None)
async def cm_start(message : types.Message):
  await FSMAdmin.photo.set()
  await message.reply('Загрузи фото')

#выход из состояния добавления
#@dp.message_handler(state="*", commands='отмена')
#@dp.message_handler(Text(equals='отмена', ignore_case=True), state="*")
async def cancel_handler(message: types.Message, state: FSMContext):
  current_state = await state.get_state()
  if current_state is None:
    return
  await state.finish()
  await message.reply('OK')

#ловим первый ответ и добавляем фото.
#@dp.message_handler(content_types=['photo'], state=FSMAdmin.photo)
async def load_photo(message: types.Message, state: FSMContext):
  async with state.proxy() as data:
    data['photo'] = message.photo[0].file_id
  await FSMAdmin.next()
  await message.reply("Введите описание")

#ловим второй ответ и пишем описание
#@dp.message_handler(state=FSMAdmin.name)
async def load_name(message: types.Message, state: FSMContext):
  async with state.proxy() as data:
    data['name'] = message.text

  async with state.proxy() as data:
    await message.answer('Запись добавлена!')

  await sqlite_db.sql_add_command(state)
  await state.finish()

#Регистрируем хендлеры
def register_handlers_admin(dp : Dispatcher):
  dp.register_message_handler(cm_start, commands=['разместить'], state=None)  
  dp.register_message_handler(cancel_handler, state="*", commands='отмена')
  dp.register_message_handler(cancel_handler, Text(equals='отмена', ignore_case=True), state="*")
  dp.register_message_handler(load_photo, content_types=['photo'], state=FSMAdmin.photo)
  dp.register_message_handler(load_name, state=FSMAdmin.name)

Уверен, что можно сделать проще, без завязывания на бд) буду рад подсказкам, но пока нашел такой выход)


Ответы (0 шт):