Задать вопрос
@aes256sha

Как соеденить двух ботов вк?

Имеется бот, который запоминает слова из беседы вк, а потом генерирует из этих слов свои(пример: https://vk.com/vitalik1338)
Репозиторий этого бота на гитхабе - https://github.com/kesha1225/NeuronBot
Так же есть скрипт бота, который делает демотиваторы (отправляешь фото - получаешь в виде демотиватора с текстом)
Нужно чтобы этот бот генерировал демотиваторы(пример: https://vk.com/neurodemotivators), из слов взятых из беседы, так же как и бот выше (на markov-chain)
Код демотиватора:
import vk_api
import requests
import random
import os
from PIL import Image
from PIL import ImageOps
from PIL import ImageFont
from PIL import ImageDraw
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType

vk = vk_api.VkApi(token='токен')
vk._auth_token()
vk.get_api()
longpoll = VkBotLongPoll(vk, айди группы)


while True:
    try:
        for event in longpoll.listen():
            if event.type == VkBotEventType.MESSAGE_NEW:

                if len(event.object['attachments']) >= 1:  # проверяем есть ли вложения в сообщении
                    if 'photo' in event.object['attachments'][0]['type']:  # проверяем является ли вложение фотографией

                        photos = event.object['attachments'][0]['photo']['sizes']  # размеры фотографии
                        max_photo = photos[len(photos)-1]['url']  # выбираем ссылку на фотографию с максимальным размером.

                        img = Image.new('RGB', (1280, 1024), color=('#000000'))  # создаем картинку с черным фоном
                        img_border = Image.new('RGB', (1060, 720), color=('#000000'))  # создаем еще одну картинку с черным фоном
                        border = ImageOps.expand(img_border, border=2, fill='#ffffff')  # добавляем второй картинке белую обводку

                        user_photo_raw = requests.get(f'{max_photo}', stream=True).raw  # вытягиваем из ссылки на фото саму фотографию
                        user_img = Image.open(user_photo_raw).convert("RGBA").resize((1050, 710))  # открываем фотографию, конвертируем в RGBA и меняем размер

                        img.paste(border, (111, 96))  # вставляем картинку с обводкой
                        img.paste(user_img, (118, 103))  # вставляем фотографию

                        drawer = ImageDraw.Draw(img)  # "карандаш", которым мы будем писать текст

                        font_1 = ImageFont.truetype(font='times-new-roman.ttf', size=60, encoding='UTF-8')  # шрифт 1 для большой надписи
                        font_2 = ImageFont.truetype(font='times-new-roman.ttf', size=30, encoding='UTF-8')  # шрифт 2 для маленькой

                        # !!! Шрифт нужно скачать и разместить в 1 папке со скриптом. Качал отсюда https://ffont.ru/font/times-new-roman

                        text_1 = 'едет'  # текст большой надписи
                        text_2 = 'а куда'  # текст маленькой надписи

                        # Здесь подставляете уже какаие вам надо, можете из базы вытягивать сообщения и тд.

                        size_1 = drawer.textsize(f'{text_1}', font=font_1)  # узнаем размер 1 надписи
                        drawer.text(((1280 - size_1[0]) / 2, 850), f'{text_1}', fill=(240, 230, 210), font=font_1)  # вставляем 1 надпись внизу по центру картинки

                        size_2 = drawer.textsize(f'{text_2}', font=font_2)  # узнаем размер 2 надписи
                        drawer.text(((1280 - size_2[0]) / 2, 950), f'{text_2}', fill=(240, 230, 210), font=font_2)  # вставляем 2 надпись внизу по центру картинки

                        name = random.randint(1, 999999999)  # генерация имени

                        img.save(f'{name}.png')  # сохраняем результат в текущую директорию

                        server = vk.method("photos.getMessagesUploadServer")
                        upload = requests.post(server['upload_url'], files={'photo': open(f'{name}.png', 'rb')}).json()  # загружаем фото на сервер вк
                        save = vk.method('photos.saveMessagesPhoto', {'photo': upload['photo'], 'server': upload['server'], 'hash': upload['hash']})[0]  # сохраняем фото на сервере вк
                        photo = "photo{}_{}".format(save["owner_id"], save["id"])  # получаем фото для отправки

                        vk.method("messages.send", {"peer_id": event.object.peer_id, "attachment": photo, "random_id": 0})  # отправляем фото

                        os.remove(f'{name}.png')  # удаляем фото, чтобы не засорять память

    except Exception as e:
        print(repr(e))

Кто знает как это все соеденить?
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Нет ни какой "связи" между ботами. Есть место, куда ты сохраняешь слова первым ботом. А второй бот оттуда будет эти слова брать. Обычно, это место - бд. Популярно использовать sqlite. Легковесная файловая бд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы