Мне надо получить значение переменных которые есть в одной под функции и эти значения надо получить для функции для Бота в 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')