Можно, причем через бота и без. Но так как боты не могу просматривать журналы канала, способ через бота будет не совсем "автоматическим"
Логика такая: Пользователь вступает в канал, переходит к боту и пишет что-то на подобии "Проверить подписку/Повысить права" - а бот получает его идентификатор и попытается повысить его через метод
promoteChatMember. И ответ пользователю Ок/Неудача в зависимости от ответа api
https://core.telegram.org/bots/api#promotechatmember
Без бота - любая библиотека для работы с клиентским Mtproto. Логика будет проще, но реализация - сложнее относительно первого варианта