

bot.register_next_step_handler(msg, salary) начинает выглядеть как-то так: bot.register_next_step_handler(msg, 19000), что, очевидно, неправильно.
При вызове get не верный аргумент 2.
r = requests.get('https://api.tracker.gg/api/v2/valorant/standard/profile/riot/mrsnowman%23siuu/segments/agent?playlist=competitive&seasonId=3e47230a-463c-a301-eb7d-67bb60357d4f').json()
print(r['data'][0]['metadata']['name'])
mediagroup = [] ?mediagroups = []
@bot.message_handler(content_types = ['photo', 'text']) ## обработчик данных фото и текста инициализация
def echo(message): ##функция отправляющая сообщения
if message.text == "/start" or message.text == "/Analytics" or message.text == "/countusers" or message.text == "/deleteme" or message.text == "/Deleteuser":
bot.send_message(message.chat.id, "<b>ОШИБКА:</b> Отправка <b>команд для бота</b> в канал запрещена.",
parse_mode="HTML")
bot.send_message(message.chat.id,
"Попробуйте снова по следующей инструкции:\n1. Введите команду <b>/start</b>, ожидайте сообщение-привествие\n2. Пишите свое обращение, приклепляйте фото по необходимости",
parse_mode="HTML")
return
elif message.media_group_id:
if message.media_group_id in mediagroups:
return
mediagroups.append(message.media_group_id)
bot.send_message(message.chat.id,"<b>ОШИБКА</b> Отправка больше 1-ого изображения в канал <b>ЗАПРЕЩЕНА</b> из-за ограничений API Telegram", parse_mode ='HTML')
bot.send_message(message.chat.id,
"Попробуйте снова по следующей инструкции:\n"
"1. Введите команду <b>/start</b>, ожидайте сообщение-привествие\n"
"2. Пишите свое обращение, прикрепите фото по необходимости, <b> НО НЕ БОЛЕЕ 1-го</b>\n"
"3. При наличии дополнительных фото прикрепите оставшиеся в комментарии к посту",
parse_mode = 'HTML')
return
answer из класса Message автоматически достает id чата, во втором же варианте он берется руками. Ради сокращения первый предпочтительнее. Ну и во втором всё же надо подправить на call.from_user.id ID чата.CallbackQuery - answer@dp.callback_query_handler(text="random_value")
async def send_random_value(call: types.CallbackQuery):
await call.answer(str(randint(1, 10)))message: types.Message и call: types.CallbackQuery разницы нет, кроме наименования переменной. Аннотации типов тоже здесь нужны только для удобства. Но, так как в обработчик колбэков всегда приходит CallbackQuery, то нужно использовать его. Хоть и на работоспособность это не влияет, но путать код не нужно.lambda c: c.data == "random_value") и text="random_value" выполняют одинаковую рольCallbackQuery, поэтому call: types.CallbackQuerycall.message.answer и bot.send_message выполняют одинаковую роль. Разница есть только при использовании answer_callback_query либо call.answer