ich versuche einen DiscordBot zu erstellen, der gewisse Signale (Aktivität anderer Bots etc) in einem Qt Gui einbringen soll.
Nur kriege ich es nicht hin, das Discord Modul (discord.py) mit PyQt5 zu kombinieren. Laut Internet soll mir bei sowas wohl das Modul "threading" helfen, aber das bringt mir recht wenig, weil
1. Wenn der Bot im Vordergrund ist, heißt es
Code: Alles auswählen
WARNING: QApplication was not created in the main() thread.
2. wenn Qt im Vordergrund steht, heißt es
Code: Alles auswählen
RuntimeError: set_wakeup_fd only works in main thread
Code: Alles auswählen
class TestGui(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.pingbtn = QPushButton("ping", self)
self.pingbtn.move(30, 30)
self.pingbtn.clicked.connect(self.pingBot)
self.setGeometry(300, 300, 300, 300)
self.setWindowTitle("TestGUI")
self.show()
def pingBot(self):
# Hier soll der Bot einen anderen Bot anpingen
pass
def start():
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = TestGui()
sys.exit(app.exec_())
Code: Alles auswählen
class TestBot:
def __init__(self):
super().__init__()
self.bot = discord.Client()
self.SpamKanal = self.bot.get_channel("MyChannelID")
@self.bot.event
async def on_ready():
print("ready...")
SpamKanal = self.bot.get_channel("myChannelID")
await SpamKanal.send("Bot aktiv!")
@self.bot.event
async def on_message(message):
if message.author.name == "Bot":
return
async def pingOtherBot(self): # Hier soll der Bot dann den anderen Bot anpingen, das wird später noch mit genauerem befehl gehen...
await self.SpamKanal.send("Test")
def Main():
asyncio.set_event_loop(asyncio.new_event_loop())
TestBot().bot.run("MyToken")
Code: Alles auswählen
thread = Thread(target=start, daemon=True)
thread.start()
Code: Alles auswählen
BotThread = Thread(target=Main, daemon=True)
BotThread.start()