@Wildovaniy

Как скомбинировать Discord бота и tkinter?

Начал делать дискорд бота для своего сервера, я хотел сделать:
Чтобы я писал в чате команду console и открывалась программа, в которой можно написать текст и по кнопке "отправить" отправить сообщение в чат от имени бота
Проблема возникает на том этапе, когда я нажимаю "отправить", вылазит это:
C:\Users\Администратор\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py:1283: RuntimeWarning: coroutine 'console..send_m' was never awaited
self.tk.mainloop(n)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

Вот весь мой код:

import discord
from discord.ext import commands
import random
from tkinter import *

client = commands.Bot(command_prefix = '-')

@client.event
async def on_ready():
print('Manager is working')
games = ['♞Шахматы♞', 'Counter Strike: Global Offensive', 'DOTA 2', 'Valorant', 'Python']
await client.change_presence( status = discord.Status.online, activity = discord.Game( random.choice(games)))

@client.event
async def on_member_join( member ):
channel = client.get_channel( 716622621759766629 )
await channel.send( embed = discord.Embed( description = f"Пользователь ``{ member.name }`` успешно подключился к нам \n Дарова, { member.name } !\n Прочитай правила в канале ниже :)" , color = 0xFF00D3))

@client.command( pass_context = True)
async def console(ctx):
await ctx.channel.purge(limit = 1)
async def send_m():
server = client.get_guild( 701437596554756177 )
channel = client.get_channel( 716622621759766629 )
await channel.send( embed = discord.Embed( description = text_m , color = 0xFF00D3))
text_m = str(text_of_m.get())

window = Tk()
window.geometry("400x200")
window.title("Console of server of Wildovaniy")
window.wm_attributes("-alpha", 0.9)
run = Button(window, text="Отправить", command=send_m)
run.place(x= 150, y=100, width=100, height=40)
text_of_m = Entry(window)
text_of_m.place(x=30, y=50, width=150)
window.mainloop()

@client.command( pass_context = True)
async def clear(ctx, amount = 100):
await ctx.channel.purge(limit = amount+1)
emb = discord.Embed( title = f"Успешно очищено {amount} сообщений!", color = 0x29E30A)
await ctx.send(embed = emb)
@client.command( pass_context = True)
async def repeate(ctx, * ,arg):
await ctx.channel.purge(limit = 1)
await ctx.send(f' ' + arg)

token = open('token.txt', 'r').readline()
client.run(token)


Заранее спасибо :)
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 2
@pythonMyLife
Сир, не могли бы вы использовать специальный тег для кода?

spoiler
python ('Кхм')
Ответ написан
Комментировать
@Yanis07
У вас тут
async def send_m():

нет вызова

awaited

Код трудно читаем, но я смею предположить что вам не нужно вызывать асинхронную функцию, попробуете def send_m():
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы