Проблемы с отправкой сообщений ботом discord.py по команде кнопки tkinter gui - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь создать графический интерфейс Tkinter, в котором одним нажатием кнопки GUI бот-диск может отправить сообщение.Мне удалось сделать бот и графический интерфейс, используя потоки для запуска.Однако я не могу понять, как заставить бота отправлять сообщение, когда я нажимаю кнопку.Я ценю любую помощь.

import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
import time
import random
from tkinter import Tk, Label, Button
import threading

### Gui
class gui:
    def __init__(self, master):
        self.master = master
        self.button = Button(self.master, text="testButton", command=self.buttonFunc)
        self.button.pack()

    def buttonFunc(self):
        pass
        #Function of the button to say something in discord

### Discord bot
class yeeter():

    global client #Added global, not sure how to include self with the discord clients at @client.event
    global Client
    Client = discord.Client()
    client = commands.Bot(command_prefix = "")

    @client.event
    async def on_ready():
        print("Ready")

    @client.event
    async def on_message(msg):


        if msg.content == "-_-":
            await client.send_message(msg.channel, ":expressionless:")

        if msg.content.upper().startswith("PING"):
            userID = str(msg.author.id)
            await client.send_message(msg.channel, "<@" + userID + "> Pong! :ping_pong:")

        if msg.author.id == "367323415901896700":
            chance = random.randint(0,100)
            if chance > 50:
                userID = str(msg.author.id)
                await client.add_reaction(msg, "\U0001F36A")


def yeeterCall():
    y = yeeter()
    client.run("token")

def guiCaller():
    root = Tk()
    root.geometry("300x100")
    discordGui = gui(root)
    root.mainloop()


try:
    t = threading.Thread(target = yeeterCall)
    t.start()
    y = threading.Thread(target = guiCaller)
    y.start()
except:
    print("No new thread")

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

...