Форум сайта python.su
Всем доброго времени суток. Простой бот для discord, единственная его функция приветствовать зашедших в голосовой канал пользователей. Без использования PyQt5, бот работает без ошибок и как положено. После того как прикрутил интерфейс, он всё так же запускается с помощью button, но функция приветствия перестает реагировать. Как я понимаю проблема с отправкой сигнала из дискорда, но куда двигаться дальше не пойму.
main.py
import os import sys import json import asyncio import discord from PyQt5 import QtWidgets from discord.ext import commands from asyncqt import QEventLoop, asyncSlot import botDesign with open('./master.json', 'r', encoding='utf-8-sig') as f: data = json.load(f) TOKEN = data["guild"]["TOKEN"] BP = data["guild"]["command_prefix"] intents = discord.Intents.all() bot = commands.Bot(command_prefix=BP, case_insensitive=True, intents=intents) bot.remove_command('help') class ExampleApp(QtWidgets.QMainWindow, botDesign.Ui_MainWindow): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.client = MyDiscordCLient() self.pushBotButton.clicked.connect(self.on_connect_bot) self.pushCogsButton.clicked.connect(self.load_cog) @asyncSlot() async def on_connect_bot(self): await self.client.start(TOKEN) @asyncSlot() async def load_cog(self): for filename in os.listdir("./cogs"): if filename.endswith(".py") and not filename.startswith("_"): bot.load_extension(f"cogs.{filename[:-3]}") print(f'Loaded {filename[:-3]}') class MyDiscordCLient(discord.Client): async def on_ready(self): print('Bot logged discord server.') await self.change_presence(status=discord.Status.online, activity=discord.Game('test')) def main(): app = QtWidgets.QApplication(sys.argv) loop = QEventLoop(app) asyncio.set_event_loop(loop) window = ExampleApp() window.show() loop.run_forever() if __name__ == '__main__': main()
import discord import audiopath import audioread from discord.ext import commands from time import sleep class Audio(commands.Cog): def __init__(self, bot): self.bot = bot @commands.Cog.listener() async def on_voice_state_update(self, member: discord.Member, before, after): vc_before = before.channel vc_after = after.channel if vc_before == vc_after: return if vc_before is None and vc_after is not None: channel = member.voice.channel vc = await channel.connect() sleep(.1) vc.play(discord.FFmpegPCMAudio(audiopath.connect)) with audioread.audio_open(audiopath.connect) as f: # Start Playing sleep(f.duration) await vc.disconnect() elif vc_after is None and vc_before is not None: return else: channel = member.voice.channel vc = await channel.connect() sleep(.1) vc.play(discord.FFmpegPCMAudio(audiopath.connect)) with audioread.audio_open(audiopath.connect) as f: # Start Playing sleep(f.duration) await vc.disconnect() def setup(bot): bot.add_cog(Audio(bot))
Отредактировано BlackTampabay (Апрель 13, 2022 20:28:53)
Офлайн