Python Telegram Bot
前往频道在 Telegram
☑️ Заявки принимаются автоматически! Обучаем созданию и продвижению чат-ботов в телеграм. ссылка: @pybotg связь: @oksi_young https://telega.in/channels/+Mj_twnrYuAxkZmUy/card/?r=BrHKEWMo
显示更多5 003
订阅者
无数据24 小时
-67 天
+1730 天
帖子存档
5 003
☑️ Телеграм бот для авто-рассылки в каналы
• Бюджет: ожидает предложений
• Срок: по договоренности
• Задача:
Нужен простенький Телеграм-Бот для массовой рассылки сообщения в много каналов.
Механизм такой: Бот находится в администраторах канала, поэтому он может рассылать сообщения.
Нужно чтобы бот принимал каналы форматом channel , в список
5 003
🇱🇷 Сейчас в IT необходим технический английский!
Английский для IT - образовательный канал для изучения английского с уклоном на IT, тут ты быстро научишься техническому и даже разговорному английскому языку.
🔥 Учись и устройся на работу мечты!
5 003
Списковые включения. Часть2
Списковое включение состоит из скобок, содержащих следующее выражение с помощью предложения
for, затем нуль или более условий for или if. Результатом будет новый список, полученный в результате вычисления выражения в контексте условий for и if, которые следуют за ним. Например, (Код 1) объединяет элементы двух списков, если они не являются равными.
И это эквивалентно (Код 2). Обратите внимание, как порядок операторов for и if один и тот же в обоих этих фрагментах.
#python_обучение5 003
Продолжение к посту выше
Теперь давайте ответим пользователю следующим сценарием:
await message.answer("Вопрос №2. \n\n" "Какой либо вопрос"). Нам нужно передать пользователя в следующее состояние, состояние ответа на 2 вопрос. Это можно сделать несколькими способами. 1 способ: await Test.next(), то есть передать следующее состояние, которая идет далее по списку. 2 способ: await Test.Q2.set(), где мы явно указываем на состояние. Какой способ выбрать, решать вам, результат будет тот же.
Теперь, аналогичным образом мы должны будем создать хендлер для нашего ответа на 2 вопрос. Сценарий будет похож на ответ 1 вопроса: @dp.message_handler(state=Test.Q2) async def answer_q2(message: types.Message, state: FSMContext).
Для того, чтобы достать переменную из машины состояний, пишем следующее: data = await state.get_data(). На выходе мы получил словарь со значениями переменных. Чтобы получить эти значения, нужно следующее: answer1 = data.get("answer1") и answer2 = message.text.5 003
Генератор списков(списковые включения)
Списковое включение — легкий способ создать список на основе последовательности. В большинстве случаев он применяется для создания списков, в которых каждый элемент является результатом некой операции, произведённой над каждым членом последовательности, или для создания выборок элементов, удовлетворяющих определённому условию.
Например, предположим, что мы хотим создать список квадратов чисел (Код 1)
Обратите внимание, что при этом создается (или перезаписывается) переменная с именем x, которая все еще существует после завершения цикла. Мы можем вычислить список квадратов без побочных эффектов (Код 2)
или, эквивалентным решением,
которое является более кратким и удобочитаемым (Код 3).
#python_обучение
5 003
Хочешь учить Python в кайф?
Салют! На связи Николай. Я senior-разработчик из Яндекс, со стажем 9 лет в программировании. У меня есть телеграм-каналы для эффективного и захватывающего изучения Python'a:
Python | Тесты для программистов – настоящая находка с увлекательными тестами и детальным объяснением к каждому ответу. Присутствует классификация по сложности и рангам, следовательно подойдет как для полных чайников, так и для твердых мидлов.
Разъяснивший Python - в нём вы узнаете как основы питона (функции, библиотеки), так и его глубинные тайны (почему '1800' < '19'). А ещё здесь целая куча гайдов, фич, шпаргалок, программ и всякой полезности.
5 003
Продолжение к посту выше
Хендлер для реагирования на ответ будет иметь вид:
@dp.message_handler(state=Test.Q1), то есть это уже будет служить фильтром на первый вопрос. Любое текстовое сообщение, которое передаст пользователь попадет в этот хендлер.
Теперь пишем нашу функцию: async def answer_q1(message: types.Message, state: FSMContext). Тело функции: answer = message.text. Для того, чтобы сохранить куда то ответ, мы используем машину состояний. Нам понадобится наш state: await state.update_data(answer1 = answer). Так же, есть еще один способ: async with state.proxy( ) as data. Тело функции: data["answer1"] = answer.
Данный способ удобен, когда вы хотите изменять сразу данные в стейте. Например, если выхотите увеличить какое то число или добавить элемент в список, то вы сразу можете работать с этими значениями.5 003
Уволенный Python-разработчик создал свой канал, где назло делится секретами и задачками языка для улучшения навыков программирования
Узнайте о секретах профессиональной разработки на канале Python | Guide
5 003
Добавьте кнопки
Сделать клик — быстрее и удобнее, чем набирать текст, особенно на бегу. К тому же кнопка подскажет пользователю, какого рода запросы можно отправлять боту.
5 003
Использование списков в качестве очередей
Вы можете без труда использовать список также и в качестве очереди, где первый добавленный элемент оказывается первым полученным («первый вошёл — первый вышел»); однако списки не эффективны для этой цели. Хотя добавления и извлечения из конца списка быстры, делать вставки и извлечения с начала списка медленно (потому что все другие элементы придется сдвинуть на одну позицию).
Для реализации очереди используйте
collections.deque, которая была разработана с целью иметь быстрые добавления и извлечения с обоих концов (Фото).5 003
Как назвать переменную, чтобы над тобой не смеялась вся команда? Как запрограммировать функцию без ошибок? Что делать, если код работает не так, как нужно?
Парни из журнала «Код» разбирают всё это без пафоса и ЧСВ — просто и доступно. Здесь никто не смеётся над новичками, а вместо критики дают дельные советы.
Подписывайтесь: @thecodemedia
5 003
Продолжение к посту выше
Дальше, пишем асинхронную функцию. Ее вид:
async def enter_test(message: types.Message). Внутри функции будет находится ответ пользователю: await message.answer("Вы начали тестирование.\n" "какой то текст с вопросом и выбором вариантов ответа"). Когда человек прочитал вопрос и ответил что то, бот должен понять то, что ответил пользователь. Поэтому нужно задать пользователю состояние ответа на первый вопрос.
Как мы это сделаем? У нас есть группа состояний Test, в которой есть состояние ответа на первый вопрос Q1. Состояние будет выглядеть так: await Test.Q1.set( ). Await задается, потому что set( ) дает карутину.
Теперь, когда пользователь находится в состоянии ответа на 1 вопрос, мы должны будем ему создать хендлер, который будет реагировать на это.5 003
Продолжение к посту выше
По сути своей,
State( ) и StatesGroup тоже фильтры, но они немножко необычные, у них есть множество дополнительных параметров, которые мы разберем чуточку позже.
А сейчас нам надо импортировать наш тест в __init_.py, использовав следующий синтаксис: from .test import Test. Теперь мы спокойно можем импортировать из states наш класс Test.
Далее, мы создадим хендлер в нашей папке handlers users, так как это личная переписка. Создадим файл testing.py, где и будут лежать наши хендлеры по тестированию. Как обычно, импортируем диспачер, types и Command. Теперь создаем наш хендлер по следующему сценарию @dp.message_handler(Command("test")). В данный хендлер буду попадать все команды test, если не установлено состояние.5 003
Выбрать тактику продвижения
Отталкиваясь от цели, определите, какие инструменты будете использовать для продвижения.
3 основные механики взаимодействия с подписчиками в Telegram:
• только канал
• только чат-бот
• канал + чат-бот
Если ваша цель — продажи, то начните с чат-бота, особенно если решение о покупке принимается быстро.
В сложных нишах, где принятие решения затягивается на несколько недель или месяцев, в дополнение к чат-боту можно создать канал и наполнять его качественным контентом, который будет отрабатывать возражения и укреплять репутацию бренда.
Если ваша цель — имиджевое продвижение, то рекомендуем начать с канала, чтобы с помощью контента создавать образ бренда и поддерживать его. Чат-бот можно запустить позже, если в этом будет необходимость. После этого можно переходить к стратегии продвижения, которая состоит из 4 пунктов, о которых мы расскажем через пару дней
5 003
Каналы от Senior разработчиков
Хотите быстро выучить Python, Java или другой язык программирования? Подписывайтесь на каналы от опытных разработчиков, где они объясняют код и учат программировать.
🐍 Канал Senior Python разработчика:
@seniorpy
☕️ Канал Java разработчика:
@seniorjavist
🤖 Канал C++ разработчика:
@seniorcpp
💻 Канал JavaScript разработчика:
@senior_front
📊 Обучение SQL с нуля:
@seniorsql
5 003
Продолжение к посту выше
По сути своей,
State( ) и StatesGroup тоже фильтры, но они немножко необычные, у них есть множество дополнительных параметров, которые мы разберем чуточку позже.
А сейчас нам надо импортировать наш тест в __init_.py, использовав следующий синтаксис: from .test import Test. Теперь мы спокойно можем импортировать из states наш класс Test.
Далее, мы создадим хендлер в нашей папке handlers users, так как это личная переписка. Создадим файл testing.py, где и будут лежать наши хендлеры по тестированию. Как обычно, импортируем диспачер, types и Command. Теперь создаем наш хендлер по следующему сценарию @dp.message_handler(Command("test")). В данный хендлер буду попадать все команды test, если не установлено состояние.5 003
Обеспечьте безопасность
Ваш бот должен быть защищён от вероятных атак, тем более, если он уже интегрирован с CRM, внутренними серверами или другими важными системами.
