Как в Телеграмме собрать имена пользователей в 1 файл

Опросы в Telegram-боте с помощью AIOGram с записью в JSON

Сегодня мы разберем как сделать опросник в Telegram и запустить сбор данных о пользователях. Чтобы не повторяться, буду иногда обращаться к предыдущим статьям.

Для создания опросника мы воспользуемся библиотекой AIOGram.
Результаты опросов будем сохранять в файл JSON.

Что потребуется для создания опросника:

  • Компьютер или ноутбук (для особых извращений можно и телефон)
  • Редактор кода (У меня PyCharm)
  • Python версии 3.9 и выше
  • Соединение с интернетом

Установка библиотек и структура проекта

Установка AIOGram для Windows:

pip install aiogram json

AIOGram для macOS:

pip3 install aiogram json

Пользоваться будем уже известным шаблоном для разработки бота .
При разработке подобных проектов шаблон сильно упростит вам жизнь.

+—telegram_bot | +—handlers | | +—Users | | | +—__init__.py | | | +—help.py | | | +—audio.py | | | —start.py | | —__init__.py | +—states | | +—__init__.py | | —dowload.py | +—keyboards | | | +—inline | | | |—choice_but_start_test.py | | | —__init__.py | | —__init__.py | +—utils | | +—__init__.py | | —set_bot_commands.py | +—app.py | —loader.py

Как и в прошлом разборе , мы будем двигаться по всем директориям и рассматривать написанный код.

Разбор кода для создания опросника

Loader.py

from aiogram import Bot, Dispatcher, types from aiogram.contrib.fsm_storage.memory import MemoryStorage token = ‘52627**************HQvtGZWe_BTVyKi4H1FvT_ezSCy8’ bot = Bot(token=token, parse_mode=types.ParseMode.HTML) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage)

Импортируем класс бота, диспетчера и типы, а также класс для хранения информации в оперативной памяти.

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

Этот файл будет мотором нашего бота. В дальнейшем мы будем обращаться сюда, чтобы расширять наши возможности.

App.py

Как и в прошлом гайде, этот файл будет собирать все хендлеры и инициализировать их, чтобы потом запускать прием от API:

from aiogram import executor from loader import dp import handlers from utils.set_bot_commands import set_default_commands async def on_startup(dispatcher): # Устанавливаем дефолтные команды await set_default_commands(dispatcher) if __name__ == ‘__main__’: executor.start_polling(dp, on_startup=on_startup)

Utils

Set_bot_commands.py

В этом файле мы создаем команды, которые отображаются в меню. Первый аргумент — вызов команды, второй — её описание:

from aiogram import types async def set_default_commands(dp): await dp.bot.set_my_commands( [ types.BotCommand(«start», «Запустить бота»), types.BotCommand(«help», «Вывести справку»), types.BotCommand(«onstarttest», «Пройти первый опрос»), ] )

States

__init__.py

from .on_start_test import CallbackOnStart

Подробнее о пакетах в python: ссылка на статью, ссылка на видео.
Для представления о пакетах этих ссылок хватит.

On_start_test.py

В этом файле будут храниться наши состояния, в которые мы будем сохранять информацию на время опроса. Подробнее можно узнать о машинном состояние по запросу FSM.

Еще по теме:  Не работает Telegram bot api

У нас будет три состояния для трех этапов опроса:

from aiogram.dispatcher.filters.state import StatesGroup, State class CallbackOnStart(StatesGroup): Q1 = State() Q2 = State() Q3 = State()

Keyboards

Чтобы не захламлять основной файл, будем выносить все кнопки в отдельный пакет. В нашем случае используем генератор для inline кнопок.

__init__.py

Импортируем типы для работы с кнопками. Дальше пишем функцию создания кнопок из массива. У нас будет двумерный массив — каждый массив с городами будет в одной линии у пользователя:

from . import inline choice_but_start_test.py from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton def towers(): list_button_name = [[‘Москва’, ‘Санкт Петербург’, ‘Нижний Новгород’, ‘Ростов’], [‘Новосибирск’, ‘Екатеринбург’, ‘Казань’, ‘Челябинск’]] buttons_list = [] for item in list_button_name: l = [] for i in item: l.append(InlineKeyboardButton(text=i, callback_data=i)) buttons_list.append(l) keyboard_inline_buttons = InlineKeyboardMarkup(inline_keyboard=buttons_list) return keyboard_inline_buttons

Почему именно так? Если не прибегать к генератору кнопок, нам бы пришлось каждую кнопку прописывать руками, а это неудобно.

Подробнее о кнопках в AIOGram можно узнать тут .
Функция возвращает массив кнопок для работы с ними.

Handlers

On_start_testing.py

Это лишь пример. Вы всегда можете переделать его под себя, чтобы получать нужные вам данные от пользователей.

Импорты

Все импорты понятные, но сделаем акцент на библиотеке json. Она нужна для взаимодействия с файлами JSON, в них мы будем сохранять результаты опроса.

import json from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.types import ReplyKeyboardRemove from keyboards.inline.choice_but_start_test import towers from loader import dp from aiogram import types from states import CallbackOnStart

Реакция на команду

Этот хендлер будет отзываться на команду onstarttest.

Первым делом мы проверяем проходил ли пользователь опрос раньше. Для этого открываем базу данных в JSON-файле и перебираем все элементы в поисках ID пользователя. Если его нет, запускаем тест, переводя пользователя в FSM. Если пользователь уже есть в базе — отправляем сообщение, что он проходил опрос ранее.

Следующий хендлер срабатывает при состоянии Q1. Впоследствии генерируется набор кнопок. После ответа пользователя, полученные данные сохраняются в FSM кэш. После всех действий бот отправляет новый вопрос и переводит человека в новую фазу состояния:

Answer — это данные из скрытого ответа inline кнопки. Data запрашивает все данные, сохранённые в FSM. Дальше мы готовим информацию к сохранению в JSON-файл (под ID пользователя мы добавляем полученные ответы). Когда всё готово, отправляем пользователю его выбранные ответы:

Подробнее о сохранении в файл

Подразумевается, что файл будет создан заранее. В противном случае python выведет ошибку о его отсутствии, поскольку режим чтения файла в автоматическом режиме стоит «r» (подробнее о режимах тут ):

Еще по теме:  Автоблокировка ботов в Телеграмме

with open(‘users_test_one.json’, encoding=’utf-8′) as file: data = json.load(file) data.update(user) with open(‘users_test_one.json’, ‘w’, encoding=’utf-8′) as outfile: json.dump(data, outfile, indent=4, ensure_ascii=False)

Конструкцией «with open as file» мы сразу присваиваем открытому файлу название и можем удобно с ним работать. Дальше мы скармливаем библиотеке JSON-файл, чтобы она конвертировала его в словарь языка. К старым данным внутри файла добавляются новые с помощью метода «update».

После всех манипуляций мы еще раз открываем файл с пометкой w (открытие файла для записи) и перезаписываем его с дополнениями.

Для корректного сохранения используем библиотеку json и функцию dump. Первый аргумент dump — что записываем, второй — куда записываем (это должен быть уже открытый файл), а третий — размер отступов внутри.

Заключение

Сегодня мы познакомились с новыми возможностями AIOGram и сделали на его базе опросник, который собирает данные пользователей в JSON-файл.

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

При должном желании, можно использовать части кода или идеи в других проектах.

Источник: directprobi.ru

Папки в Telegram: как создать и для чего нужны?

Особенности папок в Телеграм

Помимо папок по умолчанию, вы можете создавать свои собственные папки, задав для них желаемые настройки. Среди настроек, которые предлагает Telegram при создании папок: Чаты. Вы можете выбрать отдельные чаты или типы чатов.

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

Как создать папку с телефона?

Как создать папку с телефона

Чтобы добавить папку, вам необходимо скачать приложение Telegram, запустить его и войти в систему. После этого нажмите и удерживайте пальцем в нижней части экрана раздел «Чаты», и через некоторое время появится всплывающее окно, в котором будет только одна кнопка: «Добавить папку». Нажмите здесь.

Обратите внимание, что если вы ранее создавали папки в своей учетной записи Telegram, после длительного нажатия на раздел «Чаты» вы увидите меню для редактирования созданных папок чата. Вы попадете в раздел для создания папок чата.

Здесь вы можете создавать папки «Новые» и «Личные», принцип работы которых мы обсуждали ранее. Если эти папки вам подходят, нажмите «Создать» рядом с ними.

Другой вариант — создать свою собственную папку и настроить ее индивидуально для вас. Для этого необходимо нажать на «Создать свою папку». Откроется окно создания папки. Здесь вам нужно добавить имя к папке и добавить в нее нужные чаты, в разделах «Выбранные» и «Исключенные». Нажав «Добавить чаты» в соответствующем разделе, вы можете выбрать как отдельные чаты, так и группы чатов, сформированные по определенным принципам.

Еще по теме:  Как изменить свою ссылку в Телеграмме

После добавления желаемых чатов (чат-групп) нажмите кнопку «Создать». Все, после этого будет создана папка с чатами. Вы можете продолжить создание других папок или закрыть диспетчер редактирования папок. Чтобы переключиться из всех чатов в созданную папку, просто смахните вправо. На экране все чаты. Точно так же, перемещая палец, вы можете перемещаться между другими папками.

Как создать папку с компьютера?

Как создать папку с компьютера

Принцип работы папок Telegram на разных устройствах не различается. Когда вы создаете папку в одном гаджете, она появится в другом, в той же учетной записи Telegram.

Чтобы создать папку для чатов в Telegram на своем компьютере, нажмите на три полоски в верхнем левом углу приложения. Появится меню. В нем нужно выбрать пункт «Настройки». Затем перейдите в раздел «Папки». Здесь принцип создания папок такой же, как и в мобильной версии приложения Telegram.

Вы можете создать папки шаблонов: «Новые» и «Личные», нажав «Добавить» рядом с ними. Или создайте папку со своими настройками, нажав «Создать новую папку» вверху. Рассмотрим второй вариант. Введите название папки и добавьте желаемые чаты, нажав кнопку «Добавить чат» рядом с соответствующими разделами.

Затем осталось выбрать чаты для папки и нажать «Сохранить». После этого добавьте еще чаты по нужным параметрам или исключите и нажмите «Создать». Папка будет создана. Вы можете переключаться между папками в меню слева.

Источник: zatupila.ru

Что такое публичное имя пользователя и как его получить

Что такое публичное имя пользователя и как его получить

Вы можете получить общедоступное имя пользователя в Telegram. Затем другие пользователи смогут найти вас по этому имени пользователя — вы появитесь в поиске контактов в разделе «глобальные результаты». Пожалуйста, обратите внимание, что люди, которые вас найдут, смогут отправлять вам сообщения, даже если они не знают вашего номера. Если вас это не устраивает, мы не рекомендуем настраивать имя пользователя в Telegram. Вы можете получить имя пользователя в Настройках и использовать универсальное поле поиска в списке чатов для поиска чатов, сообщений и имен пользователей.

Источник: linkbaza.com

Рейтинг
( Пока оценок нет )
Загрузка ...