При создании нового бота гораздо проще использовать шаблон, чем вспоминать, как же правильно все инициировать или копировать с другого бота. Telethon: from telethon import TelegramClient, events telegram = TelegramClient('session', 'api_id', 'api_hash').start() @telegram.on(events.NewMessage(pattern='(!проверка)')) async def handler_proverka(message): await message.reply('Проверка успешна!') @telegram.on(events.NewMessage(pattern='(!напиши )')) async def handler_napishi(message): await message.reply(message.text.replace('!напиши ', '')) @telegram.on(events.NewMessage(pattern='(!параметрысбщ)')) async def handler_parametri(message): await message.reply('У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(vars(message)[value]) for value in vars(message) if not value.startswith('_')])) print('Бот запущен') telegram.run_until_disconnected() Python from telethon import TelegramClient, events telegram = TelegramClient('session', 'api_id', 'api_hash').start() @telegram.on(events.NewMessage(pattern='(!проверка)')) async def handler_proverka(message): await message.reply('Проверка успешна!') @telegram.on(events.NewMessage(pattern='(!напиши )')) async def handler_napishi(message): await message.reply(message.text.replace('!напиши ', '')) @telegram.on(events.NewMessage(pattern='(!параметрысбщ)')) async def handler_parametri(message): await message.reply('У сообщения такие параметры:\n'+'\n'.join([str(value)+': '+str(vars(message)[value]) for value in vars(message) if not value.startswith('_')])) print('Бот запущен') telegram.run_until_disconnected() Aiogram: import logging from asyncio import run from aiogram import Bot, Dispatcher from aiogram.filters import CommandStart, Command from aiogram.types import Message from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode bot = Bot("TOKEN", default = DefaultBotProperties(parse_mode = ParseMode.HTML)) dp = Dispatcher() @dp.message(CommandStart()) async def cmd_start(message: Message): await message.answer("Привет!") @dp.message(Command("help")) async def cmd_help(message: Message): await message.answer("Помощь") @dp.message() async def echo(message: Message): await message.answer(message.text) async def main() -> None: await bot.delete_webhook(True) await dp.start_polling(bot) logging.basicConfig(level=logging.INFO) run(main()) Python import logging from asyncio import run from aiogram import Bot, Dispatcher from aiogram.filters import CommandStart, Command from aiogram.types import Message from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode bot = Bot("TOKEN", default = DefaultBotProperties(parse_mode = ParseMode.HTML)) dp = Dispatcher() @dp.message(CommandStart()) async def cmd_start(message: Message): await message.answer("Привет!") @dp.message(Command("help")) async def cmd_help(message: Message): await message.answer("Помощь") @dp.message() async def echo(message: Message): await message.answer(message.text) async def main() -> None: await bot.delete_webhook(True) await dp.start_polling(bot) logging.basicConfig(level=logging.INFO) run(main()) Другие скрипты на GitHub
А потом без стака и гитхаба нихуя своего сделать не могут, легче же все по шаблонам делать, чем заучивать
Не помешало бы добавить хэш для запросов call.data, чтоб особо одаренные типы не подменивали запросы и не вызывали функции которые им недоступны, и ввести проверку chat_id == user_id, чтобы избежать атаку на бот через те же инлайн кнопки в групповых чатах