Не понимаю в чем проблема? Python - Aiogram 2.Х
Все проверил, вроде никаких ошибок нет, но при запуске бота консоль выводит ошибку: TypeError: TelegramObject.init() takes from 1 to 2 positional arguments but 3 were given И останавливает бота
Код:
bot = Bot('7050598142:AAF5nMpCiwV43J2kC8WpIEADU8CM_KwSsfE')
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
await message.answer(
'<b>? Добро пожаловать в предложку В Кирове любят.</b>\n✨ Можешь кидать сюда свое предложение и '
'администраторы сразу его запостят в канал!',
parse_mode='html')
@dp.message_handler(commands=['id'])
async def iduser(message: types.Message):
await message.answer(f"<b>? Твой ID-телеграмма: {message.from_user.id}</b>", parse_mode='html')
@dp.message_handler(content_types=['any'])
async def go(message: types.Message):
with open('config.py', 'r') as f:
a = f.readline()
b = int(a)
b += 1
with open('config.py', 'w+') as f:
f.write(str(b))
username = message.from_user.username
markup = types.InlineKeyboardMarkup()
markup2 = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('✅ Одобрить', callback_data='accept')
btn2 = types.InlineKeyboardButton(f'? Информация о заявке', callback_data='info')
btn3 = types.InlineKeyboardButton(f'? Перейти в профиль', url=f'https://t.me/{username}')
markup.row(btn1)
markup2.row(btn2, btn3)
if message.chat.type == 'private':
if message.text:
await message.bot.send_message('-1002031746023',
f'? Заявка #{b}\n? Профиль отправителя\n? Информация о заявке',
reply_markup=markup2)
await message.bot.send_message('-1002031746023', f"<b>{message.text}</b>", reply_markup=markup,
parse_mode='html')
await message.answer(f"<b>? Ваше предложение отправлено на проверку, ожидайте публикации в канале!</b>",
parse_mode='html')
if message.video:
if message.caption is not None:
await message.bot.send_message('-1002031746023',
f'? Заявка #{b}\n? Профиль отправителя\n? Информация о заявке',
reply_markup=markup2)
await message.bot.send_video('-1002031746023', f'{message.video.file_id}',
caption=f'<b>{message.caption}</b>', reply_markup=markup,
parse_mode='html')
await message.answer(f"<b>? Ваше предложение отправлено на проверку, ожидайте публикации в канале!</b>",
parse_mode='html')
else:
await message.answer(f'{message}')
await bot.send_message('-1002031746023',
f'? Заявка #{b}\n? Профиль отправителя\n? Информация о заявке',
reply_markup=markup2)
await message.bot.send_video('-1002031746023', f'{message.video.file_id}', reply_markup=markup)
await message.answer(f"<b>? Ваше предложение отправлено на проверку, ожидайте публикации в канале!</b>",
parse_mode='html')
if message.photo:
if message.caption is not None:
await message.bot.send_message('-1002031746023',
f'? Заявка #{b}\n? Профиль отправителя\n? Информация о заявке',
reply_markup=markup2)
await message.bot.send_photo('-1002031746023', f"{message.photo[0].file_id}",
f'<b>{message.caption}</b>', reply_markup=markup, parse_mode='html')
await message.answer(f"<b>? Ваше предложение отправлено на проверку, ожидайте публикации в канале!</b>",
parse_mode='html')
else:
await message.bot.send_message('-1002031746023',
f'? Заявка #{b}\n? Профиль отправителя\n? Информация о заявке',
reply_markup=markup2)
await message.bot.send_photo('-1002031746023', f"{message.photo[0].file_id}", reply_markup=markup)
await message.answer(f"<b>? Ваше предложение отправлено на проверку, ожидайте публикации в канале!</b>",
parse_mode='html')
@dp.callback_query_handler()
async def callback(call):
forward_date = call.message.date
formatted_date = forward_date.strftime("%Y-%m-%d")
formatted_time = forward_date.strftime("%H:%M:%S")
markup2 = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton(f'✅ Заявка одобрена', callback_data='info1')
markup2.row(btn1)
if call.data == 'accept':
if call.message.photo:
if call.message.caption is not None:
await bot.send_photo('-1002069697182', f'{call.message.photo[0].file_id}', f'{call.message.caption}')
await call.message.edit_reply_markup(markup2)
else:
await bot.send_photo('-1002069697182', f'{call.message.photo[0].file_id}')
await call.message.edit_reply_markup(markup2)
if call.message.video:
if call.message.caption is not None:
await bot.send_video('-1002069697182', f'{call.message.video.file_id}',
caption=f'{call.message.caption}')
await call.message.edit_reply_markup(markup2)
else:
await bot.send_video('-1002069697182', f'{call.message.video.file_id}')
await call.message.edit_reply_markup(markup2)
if call.message.text:
await bot.send_message('-1002069697182', f'{call.message.text}')
await call.message.edit_reply_markup(markup2)
if call.data == 'info1':
await bot.answer_callback_query(callback_query_id=call.id, text=f'Заявка уже одобрена!', show_alert=False)
if call.data == 'info':
await bot.answer_callback_query(callback_query_id=call.id,
text=f'Дата отправки: {formatted_date} {formatted_time}', show_alert=True)
if __name__ == "__main__":
# Запуск бота
executor.start_polling(dp, skip_updates=True)
Ответы (1 шт):
Методы send_photo
, send_message
и send_video
. Обратите внимание какое количество аргументов и в каком порядке вы их передаете.
В send_photo
передается два аргумента: chat id
и video id
.
В send_video
также два аргумента: chat id
и video id
.
А вот в send_message
есть несколько вызовов, которые передают разное количество аргументов, что вызывает ошибку.
Вызовы send_message
:
chat id
,text
,button
- Тут, если сообщение = видео, передается уже 4 аргумента:
chat id
,video id
,message.caption
иbutton
- Тут аналогично с предыдущим пунктом, если сообщение = фото, вы так же передаете 4 аргумента.
И в последнем вызове send_message
вы передаете всего 1 аргумент - chat id
- также вызывает ошибку
Также рекомендую удалить бота и сделать новый - для замены токена, ведь его не следует кому-либо давать и тем более оставлять в открытом доступе.