https://api.slack.com/apps/%APPID%/incoming-webhooks
Add New Webhook to Workspace
, привязываем вебхук к нужному каналуimport requests
data = {'text': 'TARGET: target.com\nports: 8080, 443'}
requests.post(WEBHOOK_URL, json=data)
product_tds = item.find_all("a")
title = product_tds[0].find("a").text
a
и внутри него опять ищете тег a
title = product_tds[0].text
product_tds
всегда будет содержать один элемент. Потому что он лежит внутри одного из восьми вложенных div. Так что переделываем логику в принципе on_reaction_add
вызывается только тогд , когда сообщение было отправлено при запущенном боте (грубо)on_raw_reaction_add
on_raw_reaction_add(payload)
id канала лежит в payload.channel_id
for post in my_profile
post
. Почему? Да и почему переменная называется my_profile
(мой профиль), если она содержит всех пользователей на сайте.{% if not request.user.is_authenticated %}
<a href="{%url 'register'%}">Регистрация</a>
<a href="{%url 'login'%}">Авторизоваться</a>
<a href="{%url 'post_list'%}">Новости</a>
{% else %}
<a href="{%url 'logout'%}">Выход</a>
<a href="{%url 'post_list'%}">Новости</a>
<br>
<a href="{%url 'profile' request.user.slug %}">Профиль {{request.user}}</a>
{% endif %}
/404
или условный /notfound
, а может на /
. Кто-то может упасть в 5хх ошибки, а кто-то выдаст 404 page not found
, при этом вернув статус код 200. Если нет нужного уровня доступа, может выпасть и 401, страница то сущесвует, только прав для доступа к ней нет, это считается существованием для вас?get_chat_member
не выкинет исключение. Это справедливо для покинувших канал (были кикнуты или вышли сами). Так что нужно еще проверить статус на этот случай. По сути, нужных нам только два - left и kicked. Все статусы и типы описаны тут - https://core.telegram.org/bots/api#chatmemberdef is_subscribed(chat_id, user_id):
try:
user = bot.get_chat_member(chat_id, user_id)
if user.status in ('left', 'kicked'):
return False
return True
except ApiTelegramException as e:
if e.result_json['description'] == 'Bad Request: user not found':
return False