У меня бот запускается сервисом supervisored, он умеет перезапускать скрипт при полном падении, но завершить бота из функции у меня не вышло, процесс не завершается.
Пока использую для telegram (python-telegram-bot)*:
def cmd_restart_service(update, context):
if update.message.from_user.id == 777777777: # id пользователя
import subprocess
update.message.reply_text("будет исполнено...")
subprocess.run("sudo supervisorctl restart mybotname".split())
И нет мне за это чести :)
* Внешние команды перезапуска и сама такая возможность зависит от операцинной системы/сервиса/служб/настроек, где запущен бот.