Полезное
Автор Анна Сергеева На чтение 3 мин Просмотров 15.1к.
Иногда для поиска нужной информации приходится применять закрытые «Телеграм»-каналы. Получить к ним доступ стандартным способом невозможно. Пользователя должен пригласить администратор сообщества. Просмотреть контент без ссылки не сможет ни один человек.
Определение и особенности закрытых каналов в Telegram
В мессенджере можно создавать и вести несколько типов сообществ: чаты (для переписок) и каналы (для публикации контента).
В свою очередь все страницы делятся на такие виды:
- находящиеся в свободном доступе и секретные;
- платные и бесплатные.
Каналы считаются заменителями классических пабликов. В них можно размещать посты, подключать обсуждения, делиться информацией. Набор функций мессенджера в этом плане не слишком богат. Подробной статистики активности пользователей нет. Применяя боты, администраторы добавляют кнопки реакций и комментарии.
В ВК МОЖНО СМОТРЕТЬ ЗАКРЫТЫЕ ПРОФИЛИ 😰 #shorts
Закрытые группы недоступны для пользователей, не имеющих ссылки.
Не зная названия, посторонние люди не смогут найти паблик и зайти в него. В плане заработка такие каналы менее полезны, чем публичные. Однако они используются для сохранения конфиденциальности.
Способы найти приватную группу в мессенджере и вступить в нее
Для поиска закрытого сообщения применяют следующие средства:
- Поисковые сайты. Нужно знать тематику и примерную направленность паблика. Однако даже в этом случае страница не всегда отображается в поисковой выдаче.
- Специальные каталоги. Платные или закрытые чаты туда не попадают, или их быстро удаляют из списка. Однако если паблик создан недавно, найти его можно.
- Поисковую строку «Телеграма». Для этого нужно знать название чата или хотя бы его часть. Его вводят с учетом языка и регистра.
- Социальные сети. Нередко Telegram-каналы привязываются к группам во «ВКонтакте», страницам в «Инстаграме». В описании сообщества можно найти пригласительную ссылку.
Эти инструменты не считаются надежными. Название нередко содержит специальные символы, усложняющие поиск. Чтобы найти страницу, информация о которой известна, пользуются ссылкой или поиском.
Если администрация запрещает вход, просмотреть сообщество не получится. Попасть в группу можно по найденной самостоятельно или полученной от администратора ссылке. Во всех случаях придется ждать его одобрения.
Создание личной частной беседы
Закрытые «Телеграм»-каналы создают так:
- Авторизуются в мессенджере. Переходят в меню нажатием на значок 3 полос.
- Выбирают вариант «Создать канал». Указывают название и описание. При необходимости загружают аватарку.
- Открывают меню настроек паблика. Переходят в раздел «Управление».
- Выбирают вид группы – «Частная».
Смена типа сообщества доступна не только на этапе создания, но и в любое другое время. Точно так же при необходимости можно сделать чат открытым.
Нужно заранее придумать название и описание создаваемого паблика. Это повысит заинтересованность аудитории. Привлекать подписчиков можно путем рассылки приглашений в других социальных сетях.
Удаление скрытого чата
Если необходимость в ведении сообщества отсутствует, от него можно избавиться.
Удаление выполняют так:
- Запускают мессенджер. Авторизуются в своем профиле.
- Ищут нужное сообщество в списке, нажимают на название. С помощью значка в виде 3 точек переходят в меню. Выбирают раздел «Настройки».
- Нажимают на значок карандаша. В нижней части открывшегося контекстного меню находится клавиша «Удалить».
- Подтверждают действия.
После выполнения процедуры ВИП-сообщество должно исчезнуть из вашего списка. Не будут видеть его и бывшие участники.
Обзор
Источник: telegramguru.info
Пишем бота пересылки сообщений из VK в Telegram на Python
Очень часто бывает что у вас группа в vk.com и вам бы хотелось завести канал в телеграмм но постить вручную сообщения в два источника не очень удобно. Ниже мы рассмотрим бота для пересылки сообщений из вконтакте в телеграм.
Регистрируем бота в Telegram
Отправляем ему команду:
/newbot
Придумываем имя боту
Alright, a new bot. How are we going to call it? Please choose a name for your bot. |
Придумываем username, должно заканчиваться обязательно на ‘bot’
Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. |
Все, бот зарегистрирован, самое важное это последние сообщение с токеном бота, ни кому не сообщайте его т.к. зная токен можно полностью управлять ботом.
Use this token to access the HTTP API:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Пишем бота Telegram
Создаем в нашем проекте файл settings.ini и добавляем в него настройки подключения нашего будущего бота пересылки сообщений из vk.
где:
last_id — последний ID сообщения ленты вконтакте, можно оставить 123
include_link — вставлять ли ссылки
preview_link — использовать ли предпросмотр ссылок
login — ваш логин аккаунта вконтакте
password — ваш пароль аккаунта вконтакте
domain — группа или id сообщества вконтакте
count — количество последних забираемых сообщений сообщество (ограничение API вконтакте, максимум 100 за один запрос)
bot_token — токен бота полученный выше
channel — название канала в телеграмме для публикации ботом, важно помнить что для публикации сообщений в канале ботом, его нужно добавить администратором канала
Нам понадобятся библиотеки:
configparser и logging из стандартной библиотеки Python, и конечно сам Python, на момент написания статьи у меня была версия 3.6.2
Устанавливаем библиотеки через pip желательно в virtualenv, в консоли набираем:
pip install vk_api pip install pyTelegramBotAPI
Создаем файл vk_to_tg.py и начинаем в него писать.
import os import sys import vk_api import telebot import configparser import logging from telebot.types import InputMediaPhoto
Считываем данные из settings.ini
config_path = os.path.join(sys.path[0], ‘settings.ini’) config = configparser.ConfigParser() config.read(config_path) LOGIN = config.get(‘VK’, ‘LOGIN’) PASSWORD = config.get(‘VK’, ‘PASSWORD’) DOMAIN = config.get(‘VK’, ‘DOMAIN’) COUNT = config.get(‘VK’, ‘COUNT’) BOT_TOKEN = config.get(‘Telegram’, ‘BOT_TOKEN’) CHANNEL = config.get(‘Telegram’, ‘CHANNEL’) INCLUDE_LINK = config.getboolean(‘Settings’, ‘INCLUDE_LINK’) PREVIEW_LINK = config.getboolean(‘Settings’, ‘PREVIEW_LINK’)
Инициализируем телеграмм бота vk телеграмм бота
bot = telebot.TeleBot(BOT_TOKEN)
Получаем данные из vk.com для последующей обработки
# Получаем данные из vk.com def get_data(domain_vk, count_vk): vk_session = vk_api.VkApi(LOGIN, PASSWORD) vk_session.auth() vk = vk_session.get_api() # Используем метод wall.get из документации по API vk.com response = vk.wall.get(domain=domain_vk, count=count_vk) return response
Проверяем и извлекаем данные по условиям перед отправкой
# Проверяем данные по условиям перед отправкой def check_posts_vk(): response = get_data(DOMAIN, COUNT) response = reversed(response[‘items’]) for post in response: # Читаем последний извесный id из файла ‘LAST_ID’) # Сравниваем id, пропускаем уже опубликованные if int(post[‘id’]) 0: image_urls = list(map(lambda img: max( img[«sizes»], key=lambda size: size[«type»])[«url»], images)) print(image_urls) bot.send_media_group(CHANNEL, map( lambda url: InputMediaPhoto(url), image_urls)) # Проверяем есть ли репост другой записи if ‘copy_history’ in post: copy_history = post[‘copy_history’] copy_history = copy_history[0] print(‘—copy_history—‘) print(copy_history) text = copy_history[‘text’] send_posts_text(text) # Проверяем есть ли у репоста прикрепленное сообщение if ‘attachments’ in copy_history: copy_add = copy_history[‘attachments’] copy_add = copy_add[0] # Если это ссылка if copy_add[‘type’] == ‘link’: link = copy_add[‘link’] text = link[‘title’] send_posts_text(text) img = link[‘photo’] send_posts_img(img) url = link[‘url’] send_posts_text(url) # Если это картинки if copy_add[‘type’] == ‘photo’: attach = copy_history[‘attachments’] for img in attach: image = img[‘photo’] send_posts_img(image) # Записываем id в файл config.set(‘Settings’, ‘LAST_ID’, str(post[‘id’])) with open(config_path, «w») as config_file: config.write(config_file)
Отправляем посты в телеграмм
# Текст def send_posts_text(text): if text == »: print(‘no text’) else: # В телеграмме есть ограничения на длину одного сообщения в 4091 символ, разбиваем длинные сообщения на части for msg in split(text): bot.send_message(CHANNEL, msg, disable_web_page_preview=not PREVIEW_LINK)
Если сообщение длинное то разбиваем его на несколько:
def split(text): if len(text) >= max_message_length: last_index = max( map(lambda separator: text.rfind(separator, 0, max_message_length), message_breakers)) good_part = text[:last_index] bad_part = text[last_index + 1:] return [good_part] + split(bad_part) else: return [text]
Если это изображение:
# Изображения def send_posts_img(img): # Находим картинку с максимальным качеством url = max(img[«sizes»], key=lambda size: size[«type»])[«url»] bot.send_photo(CHANNEL, url)
И в самом конце инициализируем наш скрипт:
if __name__ == ‘__main__’: check_posts_vk()
Репозиторий бота на github.com
Все, удачного Вам написания собственных Telegram ботов на Python
Источник: nikovit.ru