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.CallbackQuery
call.message.answer
и bot.send_message
выполняют одинаковую роль. Разница есть только при использовании answer_callback_query либо call.answer