Как отправить пост в телеграмм канал через бота?
Всем привет. Т.к. нет возможности в ТГ добавлять свои записи участникам канала, решил запилить бота...
Смотрел различные уроки и прочее. Как мне сделать так, чтобы заполнив форму боту, он этот пост отправил в паблик? Должны быть всего 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)
Уверен, что можно сделать проще, без завязывания на бд) буду рад подсказкам, но пока нашел такой выход)