Вывод диска Discord.py в файл python - PullRequest
0 голосов
/ 21 января 2020

Программа, приведенная ниже, должна взять токен пользователя, получить тег типа бота: (discord-bot # 0241) и вывести его в файл через регулярное выражение.

import discord

RED, CYAN, GREEN, END = '\033[91m', '\033[36m', '\033[1;32m', '\033[0m'

client = discord.Client()

token = input('Token here: ')
filename = input('File name: ')


@client.event
async def on_ready():
    botmaster = print(client.user)
    return botmaster


def config():   
    botToken = token
    botMaster = on_ready()
    print('\n[~] Configuration:\n [BOT TOKEN] =' + botToken + '\n [BOT MASTER] = ' + botMaster)
    confirm = input('\nConfirm ? (y/n) : ')
    if confirm.upper() == 'Y':
        info = 'botToken = ' + '\'' + botToken + '\'' +'\nbotMaster = ' + '\'' + botMaster + '\'' 
        with open('payload.py','r') as contents:
            save = contents.read()
        with open(fileName,'w') as contents:
            contents.write(info)
        with open(fileName,'a') as contents:
            contents.write(save)
        return('{0}[{1}*{0}]{1} Saved as ' + 'f{fileName}'.format(GREEN, END, RED))
    else:
        config()

config()

client.run(token)

У меня проблемы с выполнением потому что есть эта ошибка, и я пытаюсь понять, как с ней справиться. Часть Regex является дополнительной и пока выходит за рамки.

TypeError: can only concatenate str (not "coroutine") to str
sys:1: RuntimeWarning: coroutine 'on_ready' was never awaited

Я действительно понятия не имею, как справиться с этой ошибкой. Я искал везде и не мог найти ничего похожего с python.

1 Ответ

0 голосов
/ 21 января 2020

Вы выбрали довольно волосатую вещь для этого, поскольку в основном требуется, чтобы вы запускали клиент Discord не в al oop, а в единовременном «входе в систему с помощью этого токена и получения идентификатора пользователя». сценарий.

Кроме того, вы не должны использовать файлы Python для хранения данных конфигурации - вместо этого используйте формат данных, например JSON или YAML, или TOML, или INI, или файлы Pickle. Я выбрал JSON здесь, так как он доступен для редактирования человеком, а модуль встроен.

Это кодируется dry (т.е. я не могу проверить это работает) на основе документации API. Я с радостью постараюсь помочь, если это не так.

import asyncio
import discord
import json


async def config(token, filename):
    # Set up an event we can await on.
    ready_signal = asyncio.Event()

    # Initialize the client and hook up the event.
    client = discord.Client()

    @client.event
    async def on_ready():
        ready_signal.set()

    # Login and connect...
    await client.start(token)
    # Wait for on_ready to have set the event
    await ready_signal.wait()

    # Write information to console...
    print("Token:", token)
    print("Master:", client.user)

    # ... and to a JSON configuration file.
    with open(filename, "w") as outf:
        json.dump(
            {"token": token, "master": vars(client.user)}, outf, default=str
        )
    print("Saved:", filename)

    # Close the connection.
    await client.close()


loop = asyncio.get_event_loop()
loop.run_until_complete(config(token="asdf", filename="config.json"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...