Мне надо получить значение переменных которые есть в одной под функции и эти значения надо получить для функции для Бота в Discord

у меня есть словарь и в нём есть значение мне эти значения надо передать в основную функцию чтобы бот написал сообщения в чат `

@bot.command()
async def rank(ctx, nick):
    website = 'https://r6.tracker.network/profile/pc/'
    URL = website + nick
    HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'}
    def get_html(url):
        r = requests.get(url, headers=HEADERS)
        return r
    def get_content(html):
        soup = BeautifulSoup(html, 'html.parser')
        items = soup.find_all('div', class_='trn-text--dimmed')
        ranks = []
        for item in items:

        title = item.get_text(strip=True)
        ranks.append({
            'title': title,

        })
       MMR = ranks[1]
       TRANK = ranks[0]

    print(MMR, TRANK)
def parse():
    html = get_html(URL)
    if html.status_code == 200:
        print('Connect to website')
        get_content(html.text)

    else:
        print('Error')


    embed = discord.Embed(title=nick, color=0xfab319)
    embed.add_field(name='MMR', value=MMR, inline=True)
    await ctx.send(embed=embed)
return parse()`

Ответы (1 шт):

Автор решения: denisnumb

Ваша ошибка в том, что вы пытаетесь использовать бота за пределами асинхронных функций. Вам нужно в функции rank() вызвать необходимую функцию, которая должна вернуть нужное вам значение и передавать его боту.

Функция get_content(html) у вас ничего не возвращает.

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

Структура:

URL = None
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'}

@bot.command()
async def rank(ctx, nick):

    global URL

    website = 'https://r6.tracker.network/profile/pc/'
    URL = website + nick
 
    try:
         MMR = parse()
         embed = discord.Embed(title=nick, color=0xfab319)
         embed.add_field(name='MMR', value=MMR, inline=True)
         await ctx.send(embed=embed)

    except Exception as e:
         print(e)
        

def get_html(url):
    global HEADERS
    r = requests.get(url, headers=HEADERS)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='trn-text--dimmed')
    ranks = []
    for item in items:

        title = item.get_text(strip=True)
        ranks.append({'title': title,})
        MMR = ranks[1]
        TRANK = ranks[0]

    return MMR

def parse():

    global URL   

    html = get_html(URL)
    if html.status_code == 200:
        print('Connect to website')
        MMR = get_content(html.text)

        return MMR
    else:
        print('Error')
    
→ Ссылка