Одновременная работа с discord.py и vk_api
Я хочу написать бота с функцией одновременной работы и в Discord, и в Vk. Часть его, которая отвечает за Vk, должна из беседы копировать сообщения , в которых присутствует "@all" и пересылать это в определённый канал на мой дискорд сервер. Однако самое главное, чтобы это было лишь одной его функцией. В основном он должен работать на моём discord сервере. Вот полный код:
from threading import Thread
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api as vk_api
from datetime import datetime
import discord
from discord.ext import commands
import asyncio
#==========================================================
Vk_message_is = False
Message_for_all = ""
#==================|discord\===============================
Prefix = "."
bot = commands.Bot(command_prefix=Prefix)
@bot.event
async def on_ready(): # Как только бот подключён выводим сообщение в консоль
print('Ready!')
@bot.command()
async def hello(ctx): #Если пользователь написал .hello то отвечаем ему
author = ctx.message.author
await ctx.send("Hello")
async def sender(): # функция, которая отвечает за отправку сообщения на дискорд сервер
global Vk_message_is
global Message_for_all
await bot.wait_until_ready()
channel = bot.get_channel("id")
msg_sent = False
while True:
if Vk_message_is == True: #без условия происходит флуд, но работает как надо...
await channel.send(Message_for_all)
Vk_message_is = False
await asyncio.sleep(10)
#===============|vk|===================================
token = "token"
vk_session = vk_api.VkApi(token = token)
session_api = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session,"id беседы")
print('Vk is active')
#===============|code|=========================
def bb1():
bot.loop.create_task(sender())
bot.run("token")
def bb2(): # Функция которая ждёт сообщение из беседы с индификатором "@all"
global Vk_message_is
global Message_for_all
print('Ожидаем...')
while True:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.from_chat:
if "@all" in event.message.text.lower() :
Vk_message_is = True #Сообщение поступило
Message_for_all = event.message.text #Сам текст сообщения для отправки на дискорд сервер
print("\nТекст сообщения: "+ str(event.message.text)+"\nВремя отправки: "+str(datetime.utcfromtimestamp(event.message.date).strftime('%Y-%m-%d %H:%M:%S')+"(+ 4 часа)") ) # Просто вывод доп. информации в консоль
#Два разных потока для совместной работы двух ботов
thr1 = Thread(target = bb1) # Поток для discord части
thr2 = Thread(target = bb2) # Поток для vk части
thr1.start()
thr2.start()
Однако при запуске первой запускается функция связанная с поиском сообщения, а дискорд бот не реагирует на команды не выводит в консоль сообщение о своём запуске. После обнаружения сообщения с "@all" всё срабатывает как нужно: сообщение поступает и отправляется на канал в discord. Получается бот только пересылает сообщения из вк, а на команды в дискорд не реагирует.