Я новичок в программировании и создаю бота Discord с Discord.py. У меня есть команда, которая показывает мне информацию о предоставляемом мною IP-адресе. Проблема в. Некоторые результаты не всегда содержат информацию, например, город, и там просто написано «Нет». Я попытался создать для l oop, который изменяет каждое значение с «None» на «n / a», но он все равно возвращает «None» за пределами l oop.
Я пробовал поискать в Google, но не нашел ни одного работающего решения. Это может быть потому, что я тупой или слепой. Переменная имеет новое значение внутри l oop, но не снаружи. Можно ли изменить значение в a для l oop, чтобы использовать его вне его, или это невозможно? Я знаю, что могу вручную исправить это для каждой переменной, но было бы намного лучше сделать это с одного l oop.
Код:
@bot.command()
async def ip(msg, ctx):
host = shodan.host(ctx)
city = host.get('city')
country = host.get('country_name')
ipp = host['ip_str']
org = host.get('org')
os = host.get('os')
hostname = str(host.get('hostnames')).strip("['']")
ports = str(host.get('ports')).strip('[]')
services = host.get('services')
variables = [host, city, country, ipp, org, os, hostname, ports, services]
for v in variables:
if v == None:
v = "n/a"
await msg.channel.send(f"**City:** {city}\n**Country:** {country}\n**IP:** {ipp}\n**Organization:** {org}\n**Operating System:** {os}\n**Hostnames:** {hostname}\n**Ports:** {ports}\n**Services:** {services}")
Пример вывода:
Город: Нет
Страна: Норвегия
IP: 195.88.54.16
Организация: Globalconnect
Операционная система: Нет
Имена хостов: www.vg.no
Порты: 80, 443
Услуги: Нет
Все это всего лишь небольшая деталь и не очень важна, но я был бы очень рад, если бы у кого-нибудь был решение или любые советы, которые могут помочь мне улучшить его.