Как составить код на сообщение от бывшего

В этой статье напишу про специальный волшебный код, чтобы написал бывший. Если очень надо вызвать человека на диалог, то достаточно проделать самые простые действия. Сейчас обо всем расскажу.

Делаем вызов

Итак, код будет состоять из 3 или 4 цифр. Как их рассчитать:

  1. Написать на бумажке свою дату рождения. Например: 18. 06. 1994.
  2. Сложить числа дня рождения (1 + 8 = 9). Если у вас одна цифра, оставляем ее.
  3. Далее сложить цифры месяца рождения (0 + 6 = 6).
  4. Затем сложить все числа вашего года рождения (1 + 9 + 9 + 4 = 23). Это число так и оставляем, не складываем.
  5. В итоге получаем: 9623.
  6. Эти цифры написать на любом запястье, параллельно представляя, как вам пишет или звонит бывший.

Сорви овации

Будьте самыми стильными! Используйте суперэффекты:

  1. Фильтры и маски для ТикТока.
  2. Бьюти приложения для видео.
  3. Красивые шрифты.
  4. Видеоредакторы.
  5. Убрать предмет с фото.
  6. Flat Lay раскладка.
  7. Оживить фото.
  8. Соединить 2 фото в 1 лицо.
  9. Акварельные мазки.
  10. Надпись в круге на фото.
  11. Изменить цвет предмета на фото.
  12. Топ-20 лучших фильтров VSCO.
  13. Рамки (большая коллекция).
  14. Двойная экспозиция.
  15. Снимки в стиле Полароид.

Еще куча лайфхаков, секретов обработки, лучших фильтров и необычных масок. А также о том, как сделать радугу на лице, наложить текст, правильно разложить раскладку на фото, описано в сборной большой статье. Кликайте на картинку!

лайфхаки для фото красивая обработка фото

Теперь вы точно знаете, волшебный код, чтобы написал бывший. Попробуйте его на себе.

Спасибо за ваше потраченное время

Как написать простого бота для ВК и Телеграм

Время на прочтение
14 мин

Количество просмотров 38K

Мы уже упоминали, как мы предоставляем бесплатные VPS для студентов, чтобы они учились программировать. Один из наших подопечных Павел сделал простеньких телеграм и ВК ботов для FAQ. Они очень простые, тем не менее, начинающему программисту не помешают комментарии опытных ребят — поэтому публикуем его рассказ — Павел будет рад, если в комментариях ему дадут советы.

Я — студент Новосибирского Государственного Технического Университета, не так давно мы с парочкой моих друзей реализовали площадку для продвижения проектов во всех возможных областях научной деятельности. Мы помогаем «сводить» заинтересованных преподавателей и студентов всех ВУЗов Сибири, чтобы проектная научная деятельность развивалась по территории Сибири и РФ.

Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.

На вход они принимают сообщения, а на выходе выдают либо текстовый ответ, либо специальную структуру данных, замаскированное под сообщение: инлайновые или висячие клавиатуры.

Я использовал Python версии 3.6  просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!

1. Предварительные приготовления для телеграм-бота

1.1 Получение токена от BotFather в телеграмме

Первым делом, нам нужно «зарегистрировать» нашего бота в Telegram.

Для этого, в поисковике телеги ищем BotFather

далее, делаем всё также, как на скриншотах:

После нажимаем на команду /newbot или же прописываем вручную.

Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.

1.2 Переходим в любой редактор кода и создаем файл config.py

Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.

Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.

В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:

token = "Здесь хранится Ваш токен".

1.3 Cоздаём главный файл — bot.py

Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:

import config
import telebot # pip install telebot
from telebot import types # pip install pyTelegramBotAPI

Далее, нам необходимо использовать наш токен:

bot = telebot.TeleBot(config.token)

Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.

2. Разворачиваем функционал

Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start или /go и вообще любыми, какие Вы сочтёте нужными.

Для обработки команд нам потребуется message_handler, с помощью которого и будет реализован весь функционал обработки команд для старта и завершения, если Вы сочтёте нужным добавить завершение. Как только придёт команда /go или /start, message_handler с соответствующими командами сравнит, совпадают ли строки и если совпадают, то обработает соответствующей функцией.

Каждая функция, как и в примере сейчас, должна принимать один параметр — сообщение от пользователя, которое будет обработано соответствующей функции «в обёртке» декоратора. А также, каждая функция (или связка функций) должна возвращать соответсвующее сообщение от бота.

Итак:

@bot.message_handler(commands=['go', 'start'])  # Обработка команды для старта
def welcome(message):
    sti = open(path+'stiker.tgs', 'rb')
    bot.send_sticker(message.chat.id, sti)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)

    item3 = types.KeyboardButton("Приложения")
    item2 = types.KeyboardButton("Мероприятия")
    item1 = types.KeyboardButton('О нас')

    markup.add(item1, item2, item3)

    bot.send_message(message.chat.id,
                     "Добро пожаловать, {0.first_name}!\n\nЯ - <b>{1.first_name}</b>, бот команды Projector в НГТУ, "
                     "создан для того, "
                     "чтобы помочь Вам влиться в нашу команду,"
                     "просто узнать что-то о нас или же просто пообщаться и весело провести время.\n\n"
                     "<i>Have a nice time</i>".format(
                         message.from_user, bot.get_me()),
                     parse_mode='html', reply_markup=markup)

В этой функции реализовано сразу два действия: отправка приветственного сообщения и создание встроенной клавиатуры — ReplyKeyboardMarkup, которая будет открыта, пока мы не завершим выполнения бота соответсвующей командой. Об этом будет сказано ниже.

Итак, пройдёмся по строчкам:

В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.

Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.

Строки 30-37: описано создание и отправка приветственного сообщения

Как вы можете заметить, метод send_message в строке 30, позволяет использовать HTML, для форматирования текста.

Строками ниже, добавим запуск самого бота, который будет хоститься, пока не случится ошибка или же, пока мы Сами его не закроем.

# RUN
if __name__ == "__main__":
    try:
        bot.polling(none_stop=True)
    except ConnectionError as e:
        print('Ошибка соединения: ', e)
    except Exception as r:
        print("Непридвиденная ошибка: ", r)
    finally:
        print("Здесь всё закончилось")

Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py

Результат первого запуска:

2.1 Обработка нажатия на кнопки и создание inline keyboard

Так как любое сообщение — это текст, то мы будем обрабатывать именно текстовые сообщения.

Сделаем следующее и аналогично разберём по строчкам:

@bot.message_handler(content_types=["text"])
def go_send_messages(message):
    if message.chat.type == 'private':
        if message.text == 'Приложения':

            keyboard = types.InlineKeyboardMarkup(row_width=1)
            itemboo = types.InlineKeyboardButton(text="Тыщ на кнопку и ты уже в Google", url="<https://www.google.ru>")
            itemboo1 = types.InlineKeyboardButton('Рандомное число', callback_data='good2')
            itemboo2 = types.InlineKeyboardButton("Калькулятор", callback_data='bad2')
            itemboo3 = types.InlineKeyboardButton("Хочу узнать погоду в моем городе/стране", callback_data='good3')
            itemboo4 = types.InlineKeyboardButton("Как твои дела?", callback_data='bad4')

            keyboard.add(itemboo, itemboo1, itemboo2, itemboo3, itemboo4)

            bot.send_message(message.chat.id,
                             "{0.first_name}, окей, смотри, что у нас есть тут:\n".format(message.from_user),
                             reply_markup=keyboard)

        elif message.text == "Мероприятия":
            one_markup = types.InlineKeyboardMarkup(row_width=1)
            ite1 = types.InlineKeyboardButton("Ближайшие мероприятия", callback_data="one")
            ite2 = types.InlineKeyboardButton("Проведенные мероприятия", callback_data="two")
            ite3 = types.InlineKeyboardButton("Волонтерство на мероприятие", callback_data="three")
            ite4 = types.InlineKeyboardButton("Действующие проекты в НГТУ", callback_data="fourth")
            ite5 = types.InlineKeyboardButton("Мероприятия Межвузовского центра", callback_data="five")
            one_markup.add(ite1, ite2, ite3, ite4, ite5)
            bot.send_message(message.chat.id, "{0.first_name}, у нас <u>ежемесячно</u> проводится множество "
                                              "мероприятий,\nмы постарались разбить их на следующие составляющие:".format(
                message.from_user), parse_mode="html", reply_markup=one_markup)

Строка 339 — обработчик любых текстовых сообщений

Строка 341 предназначена для того, чтобы сказать, что если данное сообщение предназначено боту, то сравни эту строку с теми, что здесь обрабатываются и отправь ответ.

Строки 344 — 351 — создаём инлайновую клавиатуру InlineKeyboardMarkup и помещаем в эту клавиатуру 5 элементов, которые также можно будет обработать по установленной callback_data. Элементы данной клавиатуры будут расположены друг под другом, так как в строке 344, мы установили row_width = 1, что обозначает самую широкую грань одной кнопки, поэтому они и будут расположены друг под другом.

Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.

В условиях ниже представлены аналогичные представления обработки сообщений.

Итак, сделаем запуск:

2.2 Обработка InlineKeyboardButton

Как было сказано выше, каждый элемент InlineKeyboardButton имеет параметр callback_data, и именно по этим параметрам будет обрабатываться каждая кнопка. Для этого нам потребуется обработчик инлайновой клавиатуры callback_query_handler.

@bot.callback_query_handler(func=lambda call: call.data in ['one', 'two', 'three', 'fourth', 'five'])  # Мероприятия
def callback_inline_one(call):
    try:
        if call.message:
            if call.data == 'one':  # Ближайшие мероприятия
                bot.send_message(call.message.chat.id,
                                 "Итак,<b>ближайшие мероприятия</b>:\n\n"  # Здесь будут ссылки ещё
                                 "Форум «Байкал»\n"
                                 "Конкурс «Цифровой ветер»\n"
                                 "PRONETI", parse_mode="html")
            elif call.data == 'two':  # Проведённые мероприятия
                bot.send_message(call.message.chat.id, "Вот список <b>проведённых мероприятий</b>:\n\n"
                                                       "МНТК\n"
                                                       "Семинары по проектной деятельности\n"
                                                       "Встреча с представителями предприятий", parse_mode="html")
            elif call.data == 'three':

Итак, разберём построчно:

Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции

Строки 273-278 — В данном блоке if, мы просто обрабатываем сообщение и отправляем сообщение пользователю.

Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.

и т. д.

Также, в данных блоках можно определить аналогичную инлайновую клавиатуру, только тогда придётся создать ещё один обработчик callback_data, аналогичный обработчику callback_query_handler, показанный на скриншоте выше.

Результат:

Так просто и обрабатываются inline keyboards.

3. Завершаем работу бота

Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:

@bot.message_handler(commands=['stop'])  # Обработка команды для выхода
def bye(message):
    bye_Sti = open(path+'byeMorty.tgs', 'rb')

    hideBoard = types.ReplyKeyboardRemove()
    bot.send_message(message.chat.id,
                     "Досвидания, {0.first_name}!\nМы, команда <b>{1.first_name}</b>, надеемся, что ты хорошо провел(а) время \n\n"
                     "Присоединяйся к нашей команде в <a href='<https://vk.com/projector_neti>'>vk</a>\n"
                     "Наш <a href='<https://instagram.com/projector_neti>'>inst</a>\n\n"
                     "Напиши Координатору проектов (<a href='<https://vk.com/nikyats>'>Никите Яцию</a>) и задай интересующие тебя вопросы по <i>проектной деятельности</i>\n\n"
                     "Надеемся, что тебе ответят очень скоро \n\n"
                     "<u>Don't be ill and have a nice day</u> \n\n\n"
                     "P.S.: Если есть какие-то пожелания или вопросы по боту, то напиши <a href='<https://vk.com/setmyaddresspls>'>мне</a>".format(
                         message.from_user, bot.get_me()), parse_mode='html', reply_markup=hideBoard)
    exit()

Здесь происходит следующее:

  1. Отправляется прощальный стикер.
  2. Закрывается встроенная клавиатура (строка 44).
  3. Отправляется прощальное сообщение.

Так как мы используем bot.polling, с параметром none_stop = True, то пользователь может снова вознообновить общение с ботом при помощи команды /start или /go, обработка которых показано в пункте выше.

Результат:

ВК БОТ

Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.

1. Предварительные подготовления

Установим следующие библиотеки по тем же технологиям:

import vk_api # pip install vk-api
import json   # pip install json
from vk_api.longpoll import VkLongPoll, VkEventType

▍1.1 Получение токена для сообщества Вконтакте.

  1. На главной странице сообщества найти раздел «Управление»
  2. Работа с API
  3. Создать ключ. Выбираете нужные для вас пункты, которые будут доступны боту.

В итоге должно получиться примерно следующее:

Берем ключ и переходим в среду разработки и делаем следующее:

vk = vk_api.VkApi(token=
                  "Ваш_токен")

Далее — следующее:

longpoll = VkLongPoll(vk)

На этом, закончим подготавления.

2. Разворачиваем функционал

Первым делом создадим файл manage.py

Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).

main_keyboard = {
    "one_time": False,
    "buttons": [
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"1\"}",
                "label": "О нас"
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"2\"}",
                "label": "Мероприятия"
            },
            "color": "positive"
        },
            {
                "action": {
                    "type": "text",
                    "payload": "{\"button\": \"3\"}",
                    "label": "Приложения"
                },
                "color": "positive"
            }
        ],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"4\"}",
                "label": "Контакты"
            },
            "color": "primary"
        }]
    ]
}

Затем переводим её в формат json, как требуется в документации:

main_keyboard = json.dumps(main_keyboard, ensure_ascii=False).encode('utf-8')
main_keyboard = str(main_keyboard.decode('utf-8'))

Пример инлайн клавиатуры:

about_us_keyboard = {
    "inline": True,
    "buttons": [
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"1\"}",
                "label": "Основная информация"
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"2\"}",
                "label": "Чем мы занимаемся ?"
            },
            "color": "primary"
        },
        {
            "action": {
                "type": "text",
                "payload": "{\"button\": \"3\"}",
                "label": "Где мы находимся ?",
            },
            "color": "positive"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"4\"}",
                "label": "Как попасть в команду ?",
            },
            "color": "primary"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"5\"}",
                "label": "Контакты",
            },
            "color": "secondary"
        }],
        [{
            "action": {
                "type": "text",
                "payload": "{\"button\": \"6\"}",
                "label": "Задать вопрос руководителю проекта",
            },
            "color": "negative"
        }]
    ],
}

Не забываем все используемые клавиатуры переводить в формат json:

about_us_keyboard = json.dumps(about_us_keyboard, ensure_ascii=False).encode('utf-8')
about_us_keyboard = str(about_us_keyboard.decode('utf-8'))

Создадим функцию write_msg, для того, чтобы не мучиться с постоянной отправкой сообщений от бота:

def write_msg(user_id, message, key):
    vk.method('messages.send',
              {'user_id': user_id,
               'message': message,
               'keyboard': key,
               'random_id': random.randint(0, 2048)})

После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )

▍2.1 Основной функционал (создаем файл vk_bot.py)

Мы не будем разрабатывать методы, которые будут выполнять, например, функцию парсинга времени или погоды, назовем их второстепенными. Я покажу лишь основной метод, который будет обращаться к этим второстепенным методам, для обработки тех или иных сообщений от пользователя. В конце статьи я выложу ссылку на свой GitHub, где Вы сможете самостоятельно просмотреть интересующий Вас функционал любого из метода. Итак:

Конструктор класса:

class VkBot:

    def __init__(self, user_id):
        self.USER_ID = user_id
        self._USERNAME = self._get_user_name_from_vk_id(user_id)
        self.my_str = ""
        self._COMMANDS = ["привет", "погода", "время", "пока"]

        self._inputMes = {"основная информация": answers.about_us1,
                          "чем мы занимаемся ?": answers.about_us2,
                          "где мы находимся ?": answers.about_us3,
                          "ближайшие мероприятия": answers.events1,
                          "проведённые мероприятия": answers.events2,
                          "волонтёрство на мероприятие": answers.events3,
                          "действующие проекты в нгту": answers.events4,
                          "мероприятия межвузовского центра": answers.events5
                          }

Последнее свойство класса — inputMes — это особый словарь, у которого значения ключей — это текст из файла answers.py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.

(Пример кода из файла answers.py)

events1 = "Итак,ближайшие мероприятия:\n\n" \
          "Форум «Байкал»\n"\
          "Конкурс «Цифровой ветер»\n"\
          "PRONETI"

events2 = "Вот список проведенных мероприятий:\n"\
        "МНТК\n"\
        "Семинары по проектной деятельности\n"\
        "Встреча с представителями предприятий\n"\

events3 = "По поводу этого критерия напиши Илье (<https://vk.com/ki1337ki>)\n"\
        "А также, ты можешь заполнить анкету, благодаря которой,\n"\
        "с тобой лично свяжется один из руководителей направления\n"\
        "или координатор проекта (<https://vk.com/nikyats>)"

Итак, основной метод класса — это new_message, который принимает один параметр — message, который обрабатывается соответствующим условным блоком и возвращает какое -то значение обратно туда, откуда был вызван.

def _get_user_name_from_vk_id(self, user_id):
    request = requests.get("<https://vk.com/id>" + str(user_id))

    bs = bs4.BeautifulSoup(request.text, "html.parser")

    user_name = self._clean_all_tag_from_str(bs.findAll("title")[0])

    return user_name.split()[0]

def new_message(self, message):
    # self.my_str = " ".join(re.findall('[0-9]{2}', message))

    if message.lower() == self._COMMANDS[0]:
        return f"Привет, {self._USERNAME}!"

    elif message.lower() == self._COMMANDS[1] or message.lower() == "узнать погоду ":
        return self._get_weather()

    elif message.lower() == self._COMMANDS[2] or message.lower() == "узнать точное время ":
        return self._get_time()

    elif message.lower() == self._COMMANDS[3]:
        return f"До скорой встречи, {self._USERNAME}!"

    else:
        for key, value in self._inputMes.items():
            if message.lower() == key:
                return value
        return "Не понимаю тебя "

3. Возвращаемся в manage.py и дописываем функционал

Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.

import random # pip install random
from vk_bot import VkBot

После того, как мы объявили longpoll, дописываем основной функционал.

longpoll = VkLongPoll(vk)

try:
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            if event.to_me:
                bot = VkBot(event.user_id)

                if event.text.lower() == "о нас":
                    write_msg(event.user_id, "Немного о нашем проекте", about_us_keyboard)
                elif event.text.lower() == "мероприятия":
                    write_msg(event.user_id, "Что ты хочешь узнать?", events_keyboard)
                elif event.text.lower() == "приложения":
                    write_msg(event.user_id, "Посмотри, что есть здесь!", app_keyboard)
                elif event.text.lower() == "контакты":
                    write_msg(event.user_id, "По любым вопросам можешь обращаться к:", contacts_keyboard)
                elif event.text.lower() == "задать вопрос руководителю проекта":
                    write_msg(event.user_id, "У тебя есть возможность написать сообщение нашему Руководителю проекта",
                              go_answer)
                elif event.text.lower() == "калькулятор":
                    write_msg(event.user_id, "В разработке...", calc_keyboard)
                # elif event.text == " ".join(re.findall('\d{2}', event.text)):
                #     write_msg(event.user_id, "Отлично, мы здесь", calc_keyboard)
                elif event.text.lower() == "как попасть в команду ?":
                    write_msg(event.user_id, "Напиши координатору проекта - Никите\n"
                                             "или перейди на сайт проектной деятельности,\n"
                                             "найди проект номер 612 и подай заявку", in_team)
                else:
                    write_msg(event.user_id, bot.new_message(event.text), main_keyboard)

except Exception as e:
    print(e)

Как можете заметить, в условных блоках if и elif — присутствует обработка тех сообщений, которые подразумевают под собой вывод инлайн или встроенной клавиатуры (в данном примере — выводятся только инлайн клавиатуры). Сюда также можно добавить более сложные обработки сообщений, после которых обработка будет метаться туда сюда по блокам if и elif. Таким образом бот будет работать, пока не «упадёт с ошибкой».

Другое дело обстоит с блоком else, здесь мы обращаемся как раз ко классу нашего Бота, после чего он аналогичным способом находит обработку сообщения и выводит результат. Это можно назвать вложенной обработкой, а так как вложенностей лучше избегать, то лучше использовать тот метод программирования бота, который как раз-таки реализован в телеграмм боте.

Заключение

Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.

Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.

Весь код опубликован в моём профиле GitHub:

  • Телеграм Бот
  • Бот Вконтакте

Как через код элемента изменить сообщение в вкЕсть отличная поговорка что отправлено в вк то уже не изменить, и это утверждение верно. Но не до конца, изменить можно, но к сожалению только для вас, те вы можете изменить любое сообщение пользователя и поменять его текст на любой свой, однако при обновлении страницы или пересылке сообщения все вернется обратно.

Сегодня мы научим вас и расскажем как через код элемента изменить сообщение в вк.

Как через код элемента изменить сообщение в вк

Для чего это менять сообщения в вк через коды элементов? Розыгрыши и приколы, более данная функция вряд ли будет вам полезна.

В чем суть в двух словах: вы измените текст сообщения вашего друга у себя и можете сделать скриншот и отправить другу и посмеятся над ним пока он будет вспоминать когда же он такое вам писал и искать у себя в исходящих).

Не будем писать много воды вот сам способ.

  1. Данные изменения сообщений в вк мы будем показывать на примера браузера гугл хром, но такие изменения доступны почти во всех современных браузерах.
  2. Переходим в диалог с пользователем где нам надо изменить сообщение.Если вы планируете пошутить над другом то всегда выбирайте его самое последние сообщение на которое вы еще не отвечали или удалите свое сообщение идущие после чтобы выглядело правдоподобнее.
  3. Щелкаем правой кнопкой мышки на сообщение которое хотим изменить.
  4. Далее выбираем просмотреть код (в некоторых браузера данная функция называется открыть код элемента, или показать код элементов), можно воспользоваться горячими клавишами ctrl+shift+i, но в этом случаем вам придеться ковыряться и искать где же этот текст.
    Как через код элемента изменить сообщение в вк
  5. Если вы выбрали способ просмотра кода мышкой то вы сразу попадаете на нужный вам элемент.Ну и просто теперь пишет тот текст что хотим.
    Как через код элемента изменить сообщение в вк
  6. Закрываем консоль,чтобы боло красиво и видно что мы что то меняли, но не обновляем страничку.
    Как через код элемента изменить сообщение в вк
  7. Делам скрин, и отправляем его жертве.

Как через код элемента изменить сообщение в вк

Готово вот так просто изменить сообщение в вк если изменить его текст через код элемента, если вы обновите страничку то ваши изменения пропадут, и вместо вашего текста вы увидите то что было изначально.

#Руководства

  • 14 сен 2022

  • 0

Разбираемся, как написать чат-бота с помощью библиотеки aiogram. Весь код — внутри статьи.

Иллюстрация: Polina Vari для Skillbox Media

Антон Яценко

Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

Компании используют чат-ботов в Telegram для разных задач: рассылают новости о новых акциях, принимают платежи или даже организуют службу технической поддержки. Обычные пользователи тоже используют их для своих бытовых нужд — ведут учёт личных финансов или оформляют посты в социальных сетях.

В этой статье мы научимся с нуля создавать чат-ботов с помощью Python: выберем лучшую библиотеку и напишем на ней эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по чат-ботам в Telegram — во второй части мы добавим новые фичи.

Для создания Telegram-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.

aiogram

Современная библиотека, набирающая популярность. Работает с асинхронным подходом к выполнению кода. Это позволяет не останавливать работу бота в ожидании ответа пользователя. У aiogram подробная документация и большое русскоязычное комьюнити. В этой и последующих статьях цикла мы будем работать как раз с этой библиотекой.

python-telegram-bot

Одна из первых библиотек для создания ботов. Отличается от aiogram синхронным подходом к работе, то есть при ожидании ответа от пользователя выполнение кода останавливается.

TeleBot

Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать в документации.

Переходим к созданию Telegram-бота. Потренируемся на простом примере — создадим эхо-бота, который отвечает на сообщения пользователя его же словами.

Для этого нам необходимо:

  • установить Python и настроить виртуальное окружение;
  • зарегистрировать бота в специальном Telegram-канале @BotFather;
  • установить библиотеку aiogram;
  • написать код эхо-бота, связав его по API с Telegram.

На macOS или Linux. Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:

python --version

Если Python установлен, то терминал покажет его версию:

Скриншот: aiogram / Skillbox Media

На Windows требуется установка Python. Сделать это проще всего по нашей инструкции.

После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv. Это специальный инструмент, который позволяет изолировать друг от друга проекты в разработке, независимо устанавливая для них библиотеки и пакеты. Удобно, когда вы работаете над разными приложениями одновременно.

virtualenv устанавливается через терминал:

sudo pip3 install virtualenv

После этого необходимо создать директорию для проекта, внутри которой будет работать виртуальное окружение:

mkdir telegram_bot
cd telegram_bot

Команда mkdir создаст папку telegram_bot, а команда cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.

Развернём виртуальное окружение внутри папки telegram_bot:

virtualenv venv -p python3

Теперь его активируем. Если этого не сделать, то оно не будет работать.

source venv/bin/activate

Виртуальное окружение запущено, и мы готовы перейти к следующему шагу.


Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:

Скриншот: aiogram / Skillbox Media

Открываем его, жмём кнопку «Запустить» и вводим команду /newbot:

Скриншот: aiogram / Skillbox Media

Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.

Скриншот: aiogram / Skillbox Media

Этот токен мы сохраняем — он потребуется нам в будущем.


Для установки aiogram воспользуемся менеджером пакетов pip. Вводим в терминал:

pip install aiogram

Важно! Библиотека устанавливается в созданное ранее виртуальное окружение, связанное с папкой telegram_bot. Если вы решите создать нового бота в другой директории на компьютере, то установку будет необходимо провести заново, иначе aiogram не будет работать.


Писать код на Python лучше всего в IDE, а не в окне терминала. В проекте ниже мы будем использовать бесплатный редактор Visual Studio Code, но вы можете воспользоваться любым удобным для вас инструментом.

Откроем IDE и создадим файл main.py. Для этого проекта нам потребуется только он. Импортируем из aiogram нужные классы и модуль:

from aiogram import Bot, Dispatcher, executor, types

Разберёмся, что каждый из них делает. Начнём с классов:

  • Bot определяет, на какие команды от пользователя и каким способом отвечать;
  • Dispatcher позволяет отслеживать обновления;
  • Executor запускает бота и выполняет функции, которые следует выполнить.

Модуль types позволит нам использовать базовые классы для аннотирования, то есть восприятия сообщений. Например, мы будем использовать types.Message, позволяющий работать с приёмом текстовых сообщений пользователя. Подробно об этом можно прочесть в документации.

Импортируем наш токен, который поможет коммуницировать с API Telegram:

API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' #В одинарных кавычках размещаем токен, полученный от @BotFather.

Теперь необходимо инициализировать объекты bot и Dispatcher, передав первому наш токен. Если их не инициализировать, то код не будет работать.

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

Настроим приветственное окно для нового пользователя, которое будет появляться при нажатии команды /start. Для этого создаём message_handler и прописываем функцию ответа:

@dp.message_handler(commands=['start']) #Явно указываем в декораторе, на какую команду реагируем. 
async def send_welcome(message: types.Message):
   await message.reply("Привет!nЯ Эхо-бот от Skillbox!nОтправь мне любое сообщение, а я тебе обязательно отвечу.") #Так как код работает асинхронно, то обязательно пишем await.

Теперь при нажатии на кнопку Начать или при вводе команды /start пользователь будет получать от бота приветственное сообщение.

Разберёмся в коде:

  • message_handler — это декоратор, который реагирует на входящие сообщения и содержит в себе функцию ответа. Декоратор — это «обёртка» вокруг функций, позволяющая влиять на их работу без изменения кода самих функций. В нашем случае мы управляем функцией, считая команды пользователя;
  • commands=[‘start’] — это команда, которая связана с декоратором и запускает вложенную в него функцию;
  • async def send_welcome — создаёт асинхронную функцию, которая принимает в себя сообщение пользователя message, определяемое через тип Message. Саму функцию можно назвать любым образом. Мы выбрали send_welcome, чтобы название было понятным и осмысленным;
  • await message.reply — определяет ответ пользователя, используя await из-за асинхронности работы библиотеки.

Теперь создадим событие, которое будет обрабатывать введённое пользователем сообщение:

@dp.message_handler() #Создаём новое событие, которое запускается в ответ на любой текст, введённый пользователем.
async def echo(message: types.Message): #Создаём функцию с простой задачей — отправить обратно тот же текст, что ввёл пользователь.
   await message.answer(message.text)

Так как бот должен реагировать на любое текстовое сообщение от пользователя, то скобки в @dp.message_handler мы оставляем пустыми. Параметр message не отличается от использованного в предыдущих шагах.

Для ответа мы также используем метод message, указывая, что возвращаем исходный текст, принятый в message.

Остаётся последний этап — настроить получение сообщений от сервера в Telegram. Если этого не сделать, то мы не получим ответы бота. Реализовать получение новых сообщений можно с помощью поллинга. Он работает очень просто — метод start_polling опрашивает сервер, проверяя на нём обновления. Если они есть, то они приходят в Telegram. Для включения поллинга необходимо добавить две строчки:

if __name__ == '__main__':
   executor.start_polling(dp, skip_updates=True)

Всё, теперь код нашего бота полностью готов:

from aiogram import Bot, Dispatcher, executor, types
 
API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ'
 
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
 
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
   await message.reply("Привет!nЯ Эхо-бот от Skillbox!nОтправь мне любое сообщение, а я тебе обязательно отвечу.")
 
@dp.message_handler()
async def echo(message: types.Message):
   await message.answer(message.text)
 
if __name__ == '__main__':
   executor.start_polling(dp, skip_updates=True)

Сохраняем его в нашей папке telegram_bot под именем main.py.


Для запуска бота нам необходим терминал. Открываем его и переходим в нашу папку telegram_bot. После этого вводим команду:

python3 main.py

В ответ терминал пришлёт сообщение, что обновления успешно пропущены:

Скриншот: aiogram / Skillbox Media

Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:

Скриншот: aiogram / Skillbox Media

Попробуем написать что-то:

Скриншот: aiogram / Skillbox Media

Как мы видим — всё работает. Бот возвращает нам наши сообщения.

Расширять функциональность бота, указывая для разных команд пользователя разные ответы. Например, добавить раздел помощи, который будет появляться по команде /help. Или настроить запуск кода на виртуальном сервере, чтобы бот работал независимо от вашего компьютера.

В следующей части статьи мы добавим к нашему боту кнопки и новые возможности.

Научитесь: Профессия Python-разработчик
Узнать больше

СМС-бомбер

В последнее время становятся популярными так называемые «смс-бомберы» и «смс-флудеры». Это специальные программы, куда можно внести чей-то номер телефона и организовать целый поток сообщений от разных сервисов. Если это случилось с вами, ищите среди своих друзей шутника, которому подобное развлечение могло показаться забавным.

Подобные шуточные атаки обычно не приводят ни к каким проблемам, кроме испорченных нервов и отношений.

Что делать? Если сервисы-отправители вас не заинтересовали, можете добавить их в черный список, чтобы больше не получать от них никаких уведомлений. Ну а как быть с «шутником», это уже решайте сами )))

Чушь, но блин, вы все еще так делаете…

Самый наверное распространенный способ взлома прошлых лет, но есть люди которые до сих используют человеческую глупость в качестве уязвимости, а именно – это ваши простые пароли.

Как бы не твердили во всех уголках интернета, что нужно всегда ставить хорошие пароли – для нас это все фигня. Прокатит и на авось…. Не устанавливайте пароли, которые можно легко угадать и да, ваш номер телефона в качестве пароля – это тоже очень легкий пароль.

Злоумышленники используют так называемый способ brute force(брут форс) – если говорить просто, то это масштабный подбой паролей. Происходит это примерно так, взломщик узнает ваш логин обычно в качестве него берут вашу электронную почту и начинают перебирать пароли к вашей учетной записи с огромной скорость через специальные программы и не стоит их недооценивать и думать, что никогда не доберутся до вашего варианта пароля. Такие программы могут проверять пароли тысячами каждую минуты и работают автоматически, чем дольше работает, тем больше вероятность подобрать ваш пароль.

Но суть сводится к простому, не ставьте легкие пароли, которые можно подобрать. А тут можно прочитать, что такое надежный пароль и как его быстро придумать так, чтобы нельзя было подобрать, но чтобы легко можно было запомнить.

Кто-то создает базу данных номеров

Это уже более осмысленная, хоть и не очень честная деятельность. Существуют скрипты, которые собирают информацию о клиентах того или иного сервиса. Программа автоматически вводит разные номера телефонов на сайте сервиса в поле восстановления пароля. Если человек по этому номеру на сервисе зарегистрирован, то процесс восстановления будет запущен. А скрипт разместит эту информацию в специальную базу номеров.

Затем эта база используется для маркетинговых задач. Например, собирается список владельцев бонусной карты какой-то торговой точки. Информация продается конкурентам, которые, в свою очередь, начинают рассылать на номера из базы уведомления о скидках и мероприятиях. В другом случае мошенник под видом сотрудника магазина может позвонить вам и попытаться узнать данные вашей карты.

Что делать? Имейте в виду, что с помощью специальных сервисов некоторые злоумышленники подменяют свой номер так, что вам будет казаться как будто вам звонят из банка или магазина. Будьте осторожны. Когда вам кто-то звонит и просит какие-то данные, лучше положить трубку и перезвонить в банк самостоятельно.

А еще лучше: заведите специальную симкарту, которая будет использоваться только для регистрации на сайтах. И больше нигде ей не пользуйтесь.

Приходят странные СМС с кодом активации от VKcom, почему

Каждый год поступает огромное количество жалоб на социальную сеть Вконтакте, но их по мере возможности устраняют, закрывают группы в которых распространяется цп (children porn-детская порнография). Замораживают аккаунты взломщиков и тд. Есть ресурсы, которые предлагают номера из базы для активации вконтакте за деньги. Такая услуга на черном рынке стоит примерно 20WMR. Возможно, предыдущим владельцем вашего номера был такой сервис и поэтому он предлагает этот номер для активации профилей вконтакте.

Пришел код в СМС от ВКонтакте. Куда его вводить? Все очень просто! Сейчас разберемся.

А если ты уже закрыл страницу, то придется делать восстановление заново, заказывай код и на этот раз читай внимательно все, что будет написано на экране! Это не просто бла-бла. Каждое слово относится лично к тебе.

Кто-то пытается подобрать код для регистрации или входа

Мошенники любят пользоваться чужими аккаунтами в социальных сетях или других сервисах, чтобы рассылать рекламу от чужого имени. Для этого они пытаются подобрать пароль входа в уже существующие учетные записи или создать новую на чужой телефон.

Вручную сделать это не так-то просто. Ведь для регистрации в сервисе или восстановления пароля нужно пройти подтверждение с помощью кода, высланного на СМС. Но для таких задач пишутся специальные скрипты, способные методом перебора «угадывать» пароли отдельных пользователей. Если бесконечно много раз вводить разные номера телефонов и разные комбинации возможных паролей (которые генерируются автоматически), то по теории вероятности время от времени можно случайным образом угадывать рабочие комбинации. То есть из 10 тысяч разных вариантов, хотя бы один или несколько могут оказаться подходящими.

Что делать? Прямого способа защиты от этого не существует. Многое зависит от того, как работает защита от подбора авторизационных данных на самом сайте. Но вы специально можете придумать сложный пароль, который не так-то просто взломать.

  1. Длина пароля должна быть от 10 символов.
  2. Включите в него буквы, цифры и спецсимволы.
  3. Обязательно должны быть как строчные, так и прописные буквы.
  4. Никаких буквенных повторений и числовых последовательностей!
  5. Не вкладывайте в пароль никакого смысла (дата рождения, имя родителей и т.д.)
  6. Для каждого сервиса свой уникальный пароль.
  7. Чтобы запомнить их все, используйте специальные программы для хранения авторизационных данных. Например, Kaspersky Password Manager.

Подозрительный код подтверждения по СМС. Что делать?

Активация при помощи смс

Самым распространенным способом является активация посредством смс. В связи с тем, что домен сайта был изменен, всем пользователем в обязательном порядке необходимо подтвердить свою личность посредством смс. Активировать анкету нужно обязательно, в противном случае страница будет удалена. Другого способа решения проблемы с активацией не предусмотрено. И не стоить верить прочим сообщения с подозрительным содержимым. Руководство в контакте не берет денег за пользование социальной сетью. Никто никогда не будет просить вас активировать страницу в контакте за деньги. Как только в контакте были введены всплывающие окна, этой функцией в своих целях стали пользоваться мошенники.

Бывало так, что на совершенно незнакомом сайте всплывает окно с якобы пришедшим сообщением в контакте. Если нажать на кнопку, то вы окажетесь на фишинговом сайте. И в итоге пользователю сообщают, что с его аккаунта обнаружена подозрительная активность, и страница оказывается заблокированной. Но в таком случае напрашивается вопрос: как активировать страницу в контакте? Для разблокировки необходимо ввести в поле номер своего телефона и получить код активации.

Иногда случаются неожиданные ситуации, когда по тем или иным причинам оказывается заблокированной. Не стоит паниковать, так как данная ситуация связана со следующими причинами:

  • Скорее всего, ваш компьютер подхватил вирус, который мешает войти в профиль, но с самой страницей всё в порядке.
  • Ваша страница действительно подверглась блокировке, и ваши друзья видят сообщение о том, что страница заблокирована

Кто-то пытается замаскировать важно для вас сообщение

Вполне возможный вариант — кто-то организовал для вас поток смс-оповещений, чтобы во всем этом разнообразии вы не заметили действительно важную информацию. Например, злоумышленник хочет снять деньги с вашей карты. В этом случае на мобильный должно прийти уведомление о снятии средств. Но так как на вас обрушился целый поток сообщений, вы можете элементарно не заметить нужного.

Что делать? Придется просматривать каждое SMS. И блокируйте всех отправителей, которые для вас являются спаянными. Также лучше удостовериться в том, что все ваши деньги на месте, временно заблокировать карту или перевыпустить новую.

Что делать при блокировке?

Но что делать в подобной ситуации? Сейчас расскажем. В первую очередь не нужно паниковать и рвать волосы с головы. Это всего лишь профиль в интернете и ничего страшного не произошло. Посмотрите на адресную строку, так как, возможно, вы были переброшены на домен с вирусным содержимым. В большинстве случаев блокировки, мошенники требует отправить сообщение на указанный номер или позвонить на номер фальшивой технической поддержки. Сейчас люди практически не отправляют сообщения на короткие номера, но многие могут по ошибке вводить свой номер телефона в специальную форму.

Не стоит отправлять сообщения, вас таким образом пытаются подписать на платные сервисы. Все сделано таким образом, что вы вводите номер телефона, но на самом деле на вас оформляют подписку, которая будет снимать деньги ежедневно. Также посмотрите в настройках браузера, возможно вы подключены через прокси серверы мошенников. Скачайте бесплатный антивирусный сканер и проверьте компьютер на наличие вредоносных объектов.

В один прекрасный день, открывая свою страничку в контакте, Вы видите сообщение о необходимой активации своего аккаунта. Как бы Вы ни старались ввести свой e-mail и пароль, ничего не выходит, доступ заблокирован. В сообщении могут просить отправить смс для активации или даже грозиться удалением аккаунта. Вы ломаете голову, как активировать страницу в контакте.

Самое главное, что Вы должны понять, :

  • Это сообщение свидетельствует о том, что в компьютере вирус.
  • Никаких смс отправлять не нужно, иначе Вы потеряете деньги и все равно не зайдете в контакт.
  • Самому избавиться от вируса просто, следуйте инструкции в нашей статье.

Приложение для блокировки СМС

Избавиться от назойливых спамм-сообщений поможет специальное приложение «SMS Blocker».

Подозрительный код подтверждения по СМС. Что делать?

Это один из самых лучших блокировщиков спама на Андроид. Он автоматически блокирует спам-сообщения от указанных вами номеров, от неизвестных лиц. Алгоритмы, основанные на машинном обучении и искусственном интеллекте, каждый день повышают качество распознавание нелегальных СМС.

Инструмент обладает простым и понятным интерфейсом. Даже если вы не относите себя к числу уверенных пользователей смартфонов, здесь все будет доступно для вашего понимания.

Стоит ли слишком беспокоиться?

Нет, не стоит. Практика показывает, что все эти смс с кодами подтверждения, паролями и прочим — гораздо больше неприятны, чем вредны. Злоумышленник, скорее всего, не сможет войти в вашу учетную запись без высланного на ваш телефон кода. То, что на действия мошенников сервис шлет вам SMS — это защита, а не опасность. Без доступа к вашему телефону практически невозможно восстановить пароль и узнать другие данные авторизации. Для дополнительной защиты следуйте простым правилам:

  1. Создавайте безопасные пароли (как это сделать, обсуждалось выше).
  2. Не передавайте свои логины и пароли от сервисов никому. И никому не сообщайте коды авторизации, которые приходят по СМС.
  3. Не пользуйтесь пиратскими программами, чтобы не подцепить вирус, который может украсть данные.

Пожалуйста, расскажите в комментариях ниже, какое подозрительное уведомление вы получили и что было дальше!
Понравилось?

Разбираемся, куда вводить код и почему бывает так, что ввести некуда

Пришел код в СМС от ВКонтакте. Куда его вводить? Все очень просто! Сейчас разберемся.
Когда ты заказывал код, там было сказано, куда его вводить. Он вводится на той же странице, где ты его запрашивал. Если ты делаешь восстановление доступа к странице, этот код нужен для подтверждения отправки твоей заявки. Он приходит сразу после того, как ты нажал Отправить заявку. Не введешь код — заявка не отправится. Если ты регистрируешься ВКонтакте — то же самое, код нужно ввести там же, где сайт спрашивал твой номер телефона.

Примерно так должно выглядеть окно с полем для ввода кода. Код нужно ввести в пустое поле (Полученный код) и нажать Отправить:

ВКонтакте: куда вводить полученный код

Бывает, что поле для ввода кода не появляется. Ни окошка, ничего. Или экран затемняется, и ничего не происходит. Такое случается у многих, кто пытается восстановить доступ к странице через телефон. Что делать?

Совет

Не делай это с телефона. Найди компьютер, ноутбук, планшет, зайди на сайт ВКонтакте и отправь заявку на восстановление с него — через полную версию ВКонтакте.

Подобное может быть, если у тебя проблемы с интернетом или с браузером, через который ты заходишь на сайт ВКонтакте. В этом случае тебе нужно решить проблемы с интернетом (вызвать мастера, например), а что касается браузера — удалить временные файлы, обновить версию или установить другой, более современный браузер.

А если ты уже закрыл страницу, то придется делать восстановление заново, заказывай код и на этот раз читай внимательно все, что будет написано на экране! Это не просто бла-бла. Каждое слово относится лично к тебе.

Насчет восстановления доступа: после отправки заявки на рассмотрение сайт ВК просит сохранить ссылку, которая позволяет проследить за ходом рассмотрения заявки. Стоит это сделать. Это не код, а просто ссылка на страницу с твоей заявкой, куда ты можешь зайти через браузер и проверить, что там с ней. Можно просто выписать на бумажку, чтобы не потерять. Эта же ссылка приходит тебе в СМС, которое поступает на номер телефона, указанный тобой как доступный.

ВКонтакте: ссылка на заявку на восстановление доступа

Если ссылку в СМС не видно, нажми на пришедшее сообщение, и она откроется.

Понравилась статья? Поделить с друзьями:
  • Как найти детализацию счета
  • Как найти машину в сша
  • Как найти внутреннюю энергию газа зная работу
  • Как найти декартовы координаты вектора
  • Как найти песню если знаю только мотив