Я имею самый обычный рабочий график: 5/2, 8ч/день. В настоящий момент удаленно учусь в аспирантуре (коронавирус, все дела) и единственный день, когда я могу вдоволь почувствовать себя человеком-соседом и поделать что-то по дому, – это суббота. Как вы понимаете, здесь что-то пошло не так и вместо обещанных будничных пар, которые должны были проходить по вечерам после работы, нам утрамбовали всю субботу. Но дела ведь себя не переделают, поэтому решено было написать на python простого бота-кликера, который мог бы:
- Заходить на пару по скормленной извне ссылки;
- Стартовать запись экрана со звуком;
- Ожидать окончания пары;
- Выключать запись и выходить с пары.
Таким образом я и на паре присутствую, и домашними делами занимаюсь. А еще могу просмотреть лекции с удвоенным ускорением и в любое удобное для меня время. Придумано – сделано. Может быть мой опыт поможет кому-то решить аналогичную «проблему».
Как создать бота в (Robochat) «ЧАСТЬ2» #бот. ДЕЛАЕМ КЛИКЕР!!!!
В ВУЗе мы используем Microsoft Teams и для того, чтобы попасть на лекцию требуется перейти по ссылке, которую за несколько часов до старта этой самой лекции, высылает староста. На мой взгляд, самым простым решением является бот-кликер, наблюдающий за экраном и тыкающий по кнопкам. А также было бы неплохо стартовать все это удаленно и желательно с телефона.
Кликер
Начал я с питонячей библиотеки pyautogui. Если кратенько, она умеет перехватывать управление клавомышью, тыкать кнопки, вводить тексты, делать снимки экрана, искать окна приложений и взаимодействовать с ними и многое-многое другое. Для своего кликера я выстроил следующую логику: я заранее сохраняю картинку нужной кнопки, pyautogui ожидает ее появления на экране, когда он находит кнопку, то тыкает по ней.
def find_element(element): «»»Ожидание появления элемента на экране»»» sleep(1) r = None count = 100 while r is None: count -= 1 r = pyautogui.locateOnScreen(dir_true_files + element, confidence=0.7) print(count) if count == 0: print(element + ‘ не найден!’) break else: if r != None: print(element + ‘ нашОлся!’) return r else: continue
Здесь pyautogui ищет на экране в пределах счетчика «100» совпадений в 70% с заранее сохраненной картинкой.
Далее функции для взаимодействия с приложением и создание скриншота экрана:
def press_key(key): «»»Нажатие одной клавиши»»» sleep(1) pyautogui.press(key) def write_text(text): «»»Ввод текста»»» sleep(1) pyautogui.write(text, interval=0.2) def create_screenshot(screens_directory, name): «»»Создание скриншота»»» sleep(1) im1 = pyautogui.screenshot() screenshot = im1.save(screens_directory + name) return screenshot
Здесь можно расширить функционал бота, добавив возможность сравнивать время с временем системы, искать поле для ввода текста, делать его активным и вводить приветствие в зависимости от времени суток – с 09.00 до 12.00 «Доброе утро!», с 12.00 до 17.00 «Добрый день!», с 17.00 до 21.00 «Добрый вечер!». Можно сделать список, из которого раз в n минут бот будет забирать рандомное значение и передавать его функции, отправляющей текст – [‘Где экшон?’, ‘Лучше бы в армию пошел’, ‘Отличная мысль!’, ‘Я не расслышал, повторите’, ‘Хочу есть’] и т.д. Но нас на парах отмечали по факту присутствия и нахождению в онлайне – поэтому я не стал с этим заморачиваться.
Как сделать кликера бота для телеграмм легко и просто
Для записи экрана по работе я использую заранее настроенный OBS. Здесь его функциональности хватит с головой. Да, я знаю про ffmpeg, но подружиться с ним у меня так и не получилось. В итоге для старта записи я использую поиск окна по заголовку и выношу приложение «на передний план». Эти манипуляции нужны для того, чтобы, имея активное окно OBS, нажать через pyautogui хоткей для старта и окончания записи.
def active_window(title): «»»Найти окно по заголовку и сделать его активным»»» sleep(1) app = Application().connect(title_re=title, backend=’win32′) app.window(title_re=title).set_focus() sleep(3)
Кнопки сохранены, шаги в MS Teams боту прописаны, все отлажено. Как запускаться?
Чат бот
А как скармливать ему ссылку и открывать ее в MS Teams? Тут я вспомнил про давно задвинутый в дальний ящик чудесный selenium. Расчехлил и инициализировал хромдрайвер с нажатием на кнопку «Open Microsoft Teams»:
def site_desktop(url): chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(executable_path=driver_chrome, options=chrome_options) driver.set_window_size(1920, 1080) driver.get(url) find_and_click(‘/open_team.png’) sleep(3) driver.close()
Можно заморочиться с распознаванием сообщений в другом чате, откуда к нам поступаю ссылки на лекции, привязаться ко времени (первая пара в 9.00, вторая в 10.40 и т.д.) и в нужное время автоматом забрать сообщение, начинающееся с ‘https://’, но я предпочитаю контролировать этот процесс и копипастить ссылки лично.
В итоге, когда я отправляю боту url, он делает следующее:
- Открывает selenium chrome driver с присланной ссылкой;
- Кликает по кнопке «Открыть Microsoft Teams»;
- Открывает MS Teams, проверяет статус микрофона — включен/выключен. Если включен, отключает;
- Подключается к паре;
- Делает активным окно OBS, нажимает хоткей для записи экрана, отправляет скриншот рабочего стола в Телеграмм;
- Ждет 90 минут;
- Отправляет сообщение в Телеграмм о том, что пара закончилась;
- Вновь делает активным окно OBS, выключает запись, кликает на кнопку для выхода с пары;
- Отправляет финальное сообщение о завершении цикла. Ждет новой ссылки.
Не очень хорошо, что 90 минут пары я обернул в простой time.sleep, но этого, как показала практика, более, чем достаточно. Также в OBS можно настроить запись видео только окна MS Teams в небольшом разрешении с фиксированной частотой кадров и пожатым звуком, дабы уменьшить итоговый размер видоса. И затем слать его себе в Телеграмм.
А вот так это выглядит для меня, который в этот момент вполне может ехать куда-нибудь за стройматериалами (ссылки замазюкал, время сократил):
З.Ы. Я ни в коем случае не призываю пропускать таким образом уроки/пары – ученье свет! Но, увы, отечественное образование частично состоит из архаичных лекций времен советского союза, выхлоп от которых… чуть больше, чем никакой. И такой робот позволит хотя бы частично разгрузиться и переключиться на что-то более полезное и продуктивное.
- Python
- Программирование
Источник: habr.com
Как создать бота кликера в телеграмме
- Скачиваем проект с гитхаба. Запускаем проект в любой среде разработки для python (Например: PyCharm).
- Среда разработки автоматически подгрузит необходимые библиотеки с файла requirements.
- Заменяем Token от BotFather в файле main.py
- Запускаем проект
- Со второго аккаунта нажимаем /start и пишем слово «admin»
- Выключаем проект и заполняем admin_id и config_id в файле main.py
- Запускаем проект и с аккаунта пользователя нажимаем старт />
- Профит
В качестве базы данных на стороннем сервере использовался PostgreSQL на Amazon RDS с минимальными характеристиками.
Инструкция: Как создавать ботов в Telegram
24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:
1. Регистрация
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.
Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe, говорят, не всегда работает с первого раза.
2. Программирование
Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.
Собственно, её код довольно прост:
Теперь, когда вся логика бота описана можно начать придумывать ему команды.
3. Команды
Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help
C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.
4. Свобода
Как можно было заметить, Telegram присылает сообщение целиком, а не разбитое, и ограничение на то, что команды начинаются со слеша — только для удобства мобильных пользователей. Благодаря этому можно научить бота немного говорить по-человечески.
UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)
- All messages that start with a slash ‘/’ (see Commands above)
- Messages that mention the bot by username
- Replies to the bot’s own messages
- Service messages (people added or removed from the group, etc.)
Для начала в Handler добавляем обработчик:
А потом в список команд добавляем псевдо-речь:
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.
5. Не текст.
Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.
Для примера расширим словарь RESPONSES:
И будем отлавливать текст :
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
И все, теперь бот будет время от времени присылать стикер вместо времени:
6. Возможности
Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.
7. Ограничения
К сожалению, на данный момент существует ограничение на использование webHook — он работает только по https и только с валидным сертификатом, что, например для меня пока критично за счет отсутствия поддержки сертифицирующими центрами динамических днс.
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.
UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).
Name already in use
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
- Скачиваем проект с гитхаба. Запускаем проект в любой среде разработки для python (Например: PyCharm).
- Среда разработки автоматически подгрузит необходимые библиотеки с файла requirements.
- Заменяем Token от BotFather в файле main.py
- Запускаем проект
- Со второго аккаунта нажимаем /start и пишем слово «admin»
- Выключаем проект и заполняем admin_id и config_id в файле main.py
- Запускаем проект и с аккаунта пользователя нажимаем старт />
- Профит
Тестирование и графики
Графики сделаны по выборкам из
100 запросов. И представлены средние показатели выборки.
В качестве базы данных на стороннем сервере использовался PostgreSQL на Amazon RDS с минимальными характеристиками.
При одном миллионе пользователей время бэкапов становится проблемой.
Размер бэкапа полностью зависит от вашей модели данных, в моем случае при одном миллионе пользователей получилось данных на 21 мегабайт.
Как сделать бота кликера в телеграмм
6:08
Кликер Бот — Заработок на Кликах в Телеграм без Вложений | Проверка Бота
8:23
Clicker Beta Official Bot — Кликай и Зарабатывай | Проверка Проекта
0:27
ТОП смайликов для игр в Telegram
Romancev768
0:35
Telegram game bot
1:06
Авто кликер настройка под телеграм.
vova plahotya
0:51
Clicker Game Telegram IP
GamesWithApps
9:13
КАЧАЙ ЭТО ПРИЛОЖЕНИЕ И ПОЛУЧАЙ 500 РУБЛЕЙ В ДЕНЬ БЕЗ ВЛОЖЕНИЙ
Как заработать в интернете
1:54
Кликер,телеграм.Очень крутой.
10,000+ Количество установок
Источник: www.9apps.com