<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TatarinovaEM</id>
	<title>Поле цифровой дидактики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TatarinovaEM"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/TatarinovaEM"/>
	<updated>2026-07-24T19:04:04Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45565</id>
		<title>ВК-бот для напоминаний</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45565"/>
		<updated>2026-03-27T06:51:39Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Цель проекта: ==&lt;br /&gt;
&lt;br /&gt;
Разработка автоматизированного бота для социальной сети [[ВКонтакте]], способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.&lt;br /&gt;
&lt;br /&gt;
== Задачи:==&lt;br /&gt;
&lt;br /&gt;
# Изучить документацию VK API для работы с сообщениями сообществ.&lt;br /&gt;
# Реализовать механизм аутентификации через токен доступа.&lt;br /&gt;
# Организовать хранение данных о задачах в локальной базе данных (SQLite).&lt;br /&gt;
# Реализовать парсинг естественного языка для распознавания времени напоминания.&lt;br /&gt;
# Настроить асинхронную работу планировщика задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Область знаний&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Среда разработки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
vk_api, [[Python]], Bot Long Poll, requests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаги разработки:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Создание Вк сообщества)&lt;br /&gt;
    B --&amp;gt; C(Получить API-ключ Сообщества MemoPing)&lt;br /&gt;
    C --&amp;gt; D(Установить библиотеки)&lt;br /&gt;
    D --&amp;gt; E(Написать код бота)&lt;br /&gt;
    E --&amp;gt; F[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Логика работы бота:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь вводит сообщение с напоминанием через N минут/часов] --&amp;gt; B(Бот получает сообщение через VkBotLongPoll)&lt;br /&gt;
    B --&amp;gt; C(Парсит текст: ищет шаблон «через ... минут/часов»)&lt;br /&gt;
    C --&amp;gt; D{Шаблон найден?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Отправляет ошибку или игнорирует]&lt;br /&gt;
    D --&amp;gt;|Да| F(Вычисляет execute_at = текущее время + задержка)&lt;br /&gt;
    F --&amp;gt; G(Отправляет запрос к SQLite: INSERT напоминания)&lt;br /&gt;
    G --&amp;gt; H(Сохраняет запись: user_id, текст, execute_at, is_sent=0)&lt;br /&gt;
    H --&amp;gt; I(Отправляет подтверждение: «Напоминание установлено!»)&lt;br /&gt;
    I --&amp;gt; J[Готово]&lt;br /&gt;
&lt;br /&gt;
    K[Отдельный поток scheduler_worker] --&amp;gt; L(Каждые 5 секунд проверяет SQLite)&lt;br /&gt;
    L --&amp;gt; M(Запрос: SELECT напоминаний где execute_at &amp;lt;= now и is_sent = 0)&lt;br /&gt;
    M --&amp;gt; N{Найдены задачи?}&lt;br /&gt;
    N --&amp;gt;|Нет| L&lt;br /&gt;
    N --&amp;gt;|Да| O(Для каждой задачи отправляет сообщение пользователю)&lt;br /&gt;
    O --&amp;gt; P(Обновляет запись: SET is_sent = 1)&lt;br /&gt;
    P --&amp;gt; J&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Шаг 1. Создание группы. Получение API. Подключение бота ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:CreatebotMemo.png]]&lt;br /&gt;
&lt;br /&gt;
== Шаг 2. Создание файлов и кода ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:ФайлыБотаНапоминаний.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
import sqlite3&lt;br /&gt;
import threading&lt;br /&gt;
import re&lt;br /&gt;
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType&lt;br /&gt;
from vk_api import VkApi&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
TOKEN = os.getenv(&#039;VK_TOKEN&#039;)&lt;br /&gt;
GROUP_ID = int(os.getenv(&#039;VK_GROUP_ID&#039;))&lt;br /&gt;
&lt;br /&gt;
# ... (функции init_db, parse_time, send_message оставь как были) ...&lt;br /&gt;
def init_db():&lt;br /&gt;
    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
    c = conn.cursor()&lt;br /&gt;
    c.execute(&#039;&#039;&#039;CREATE TABLE IF NOT EXISTS reminders &lt;br /&gt;
                 (id INTEGER PRIMARY KEY, user_id INTEGER, text TEXT, execute_at INTEGER, is_sent INTEGER)&#039;&#039;&#039;)&lt;br /&gt;
    conn.commit()&lt;br /&gt;
    conn.close()&lt;br /&gt;
&lt;br /&gt;
def parse_time(text):&lt;br /&gt;
    pattern = r&amp;quot;через\s+(\d+)\s*(минут|мин|часов|час)&amp;quot;&lt;br /&gt;
    match = re.search(pattern, text.lower())&lt;br /&gt;
    if match:&lt;br /&gt;
        value = int(match.group(1))&lt;br /&gt;
        unit = match.group(2)&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        add_sec = value * 60 if unit in [&#039;минут&#039;, &#039;мин&#039;] else value * 3600&lt;br /&gt;
        return now + add_sec&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def send_message(vk, user_id, message):&lt;br /&gt;
    vk.messages.send(peer_id=user_id, message=message, random_id=0)&lt;br /&gt;
&lt;br /&gt;
def scheduler_worker(vk):&lt;br /&gt;
    while True:&lt;br /&gt;
        time.sleep(5)&lt;br /&gt;
        conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
        c = conn.cursor()&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        c.execute(&amp;quot;SELECT id, user_id, text FROM reminders WHERE execute_at &amp;lt;= ? AND is_sent = 0&amp;quot;, (now,))&lt;br /&gt;
        tasks = c.fetchall()&lt;br /&gt;
        for task in tasks:&lt;br /&gt;
            task_id, user_id, text = task&lt;br /&gt;
            try:&lt;br /&gt;
                print(f&amp;quot;📤 Отправка: {text}&amp;quot;)&lt;br /&gt;
                send_message(vk, user_id, f&amp;quot;⏰ Напоминание: {text}&amp;quot;)&lt;br /&gt;
                c.execute(&amp;quot;UPDATE reminders SET is_sent = 1 WHERE id = ?&amp;quot;, (task_id,))&lt;br /&gt;
                conn.commit()&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка: {e}&amp;quot;)&lt;br /&gt;
        conn.close()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    init_db()&lt;br /&gt;
    vk_session = VkApi(token=TOKEN)&lt;br /&gt;
    vk = vk_session.get_api()&lt;br /&gt;
    longpoll = VkBotLongPoll(vk_session, GROUP_ID)&lt;br /&gt;
    &lt;br /&gt;
    threading.Thread(target=scheduler_worker, args=(vk,), daemon=True).start()&lt;br /&gt;
    print(&amp;quot;✅ Бот запущен...&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    for event in longpoll.listen():&lt;br /&gt;
        print(f&amp;quot;⚡ СОБЫТИЕ: {event.type}&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает ЛЮБОЕ событие&lt;br /&gt;
        &lt;br /&gt;
        if event.type == VkBotEventType.MESSAGE_NEW:&lt;br /&gt;
            print(f&amp;quot;📩 НОВОЕ СООБЩЕНИЕ!&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает именно сообщение&lt;br /&gt;
            try:&lt;br /&gt;
                message = event.object.message&lt;br /&gt;
                text = message[&#039;text&#039;]&lt;br /&gt;
                user_id = message[&#039;from_id&#039;]&lt;br /&gt;
                peer_id = message[&#039;peer_id&#039;]&lt;br /&gt;
                &lt;br /&gt;
                print(f&amp;quot;👤 От: {user_id} | Текст: {text}&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                execute_at = parse_time(text)&lt;br /&gt;
                if execute_at:&lt;br /&gt;
                    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
                    c = conn.cursor()&lt;br /&gt;
                    c.execute(&amp;quot;INSERT INTO reminders (user_id, text, execute_at, is_sent) VALUES (?, ?, ?, 0)&amp;quot;, &lt;br /&gt;
                              (user_id, text, execute_at))&lt;br /&gt;
                    conn.commit()&lt;br /&gt;
                    conn.close()&lt;br /&gt;
                    send_message(vk, peer_id, &amp;quot;✅ Напоминание установлено!&amp;quot;)&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка обработки: {e}&amp;quot;)&lt;br /&gt;
                import traceback&lt;br /&gt;
                traceback.print_exc()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Шаг 3. Проверка работы бота ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:РаботаБотаНапоминаний.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45553</id>
		<title>ВК-бот для напоминаний</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45553"/>
		<updated>2026-03-27T06:34:22Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Цель проекта: ==&lt;br /&gt;
&lt;br /&gt;
Разработка автоматизированного бота для социальной сети [[ВКонтакте]], способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.&lt;br /&gt;
&lt;br /&gt;
== Задачи:==&lt;br /&gt;
&lt;br /&gt;
# Изучить документацию VK API для работы с сообщениями сообществ.&lt;br /&gt;
# Реализовать механизм аутентификации через токен доступа.&lt;br /&gt;
# Организовать хранение данных о задачах в локальной базе данных (SQLite).&lt;br /&gt;
# Реализовать парсинг естественного языка для распознавания времени напоминания.&lt;br /&gt;
# Настроить асинхронную работу планировщика задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Область знаний&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Среда разработки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
vk_api, [[Python]], Bot Long Poll, requests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаги разработки:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Создание Вк сообщества)&lt;br /&gt;
    B --&amp;gt; C(Получить API-ключ Сообщества MemoPing)&lt;br /&gt;
    C --&amp;gt; D(Установить библиотеки)&lt;br /&gt;
    D --&amp;gt; E(Написать код бота)&lt;br /&gt;
    E --&amp;gt; F[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Логика работы бота:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь вводит сообщение с напоминанием через N минут/часов] --&amp;gt; B(Бот получает сообщение через VkBotLongPoll)&lt;br /&gt;
    B --&amp;gt; C(Парсит текст: ищет шаблон «через ... минут/часов»)&lt;br /&gt;
    C --&amp;gt; D{Шаблон найден?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Отправляет ошибку или игнорирует]&lt;br /&gt;
    D --&amp;gt;|Да| F(Вычисляет execute_at = текущее время + задержка)&lt;br /&gt;
    F --&amp;gt; G(Отправляет запрос к SQLite: INSERT напоминания)&lt;br /&gt;
    G --&amp;gt; H(Сохраняет запись: user_id, текст, execute_at, is_sent=0)&lt;br /&gt;
    H --&amp;gt; I(Отправляет подтверждение: «Напоминание установлено!»)&lt;br /&gt;
    I --&amp;gt; J[Готово]&lt;br /&gt;
&lt;br /&gt;
    K[Отдельный поток scheduler_worker] --&amp;gt; L(Каждые 5 секунд проверяет SQLite)&lt;br /&gt;
    L --&amp;gt; M(Запрос: SELECT напоминаний где execute_at &amp;lt;= now и is_sent = 0)&lt;br /&gt;
    M --&amp;gt; N{Найдены задачи?}&lt;br /&gt;
    N --&amp;gt;|Нет| L&lt;br /&gt;
    N --&amp;gt;|Да| O(Для каждой задачи отправляет сообщение пользователю)&lt;br /&gt;
    O --&amp;gt; P(Обновляет запись: SET is_sent = 1)&lt;br /&gt;
    P --&amp;gt; J&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Шаг 1. Создание группы. Получение API. Подключение бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:CreatebotMemo.png]]&lt;br /&gt;
&lt;br /&gt;
Шаг 2. Создание файлов и кода&lt;br /&gt;
&lt;br /&gt;
[[Файл:ФайлыБотаНапоминаний.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
import sqlite3&lt;br /&gt;
import threading&lt;br /&gt;
import re&lt;br /&gt;
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType&lt;br /&gt;
from vk_api import VkApi&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
TOKEN = os.getenv(&#039;VK_TOKEN&#039;)&lt;br /&gt;
GROUP_ID = int(os.getenv(&#039;VK_GROUP_ID&#039;))&lt;br /&gt;
&lt;br /&gt;
# ... (функции init_db, parse_time, send_message оставь как были) ...&lt;br /&gt;
def init_db():&lt;br /&gt;
    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
    c = conn.cursor()&lt;br /&gt;
    c.execute(&#039;&#039;&#039;CREATE TABLE IF NOT EXISTS reminders &lt;br /&gt;
                 (id INTEGER PRIMARY KEY, user_id INTEGER, text TEXT, execute_at INTEGER, is_sent INTEGER)&#039;&#039;&#039;)&lt;br /&gt;
    conn.commit()&lt;br /&gt;
    conn.close()&lt;br /&gt;
&lt;br /&gt;
def parse_time(text):&lt;br /&gt;
    pattern = r&amp;quot;через\s+(\d+)\s*(минут|мин|часов|час)&amp;quot;&lt;br /&gt;
    match = re.search(pattern, text.lower())&lt;br /&gt;
    if match:&lt;br /&gt;
        value = int(match.group(1))&lt;br /&gt;
        unit = match.group(2)&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        add_sec = value * 60 if unit in [&#039;минут&#039;, &#039;мин&#039;] else value * 3600&lt;br /&gt;
        return now + add_sec&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def send_message(vk, user_id, message):&lt;br /&gt;
    vk.messages.send(peer_id=user_id, message=message, random_id=0)&lt;br /&gt;
&lt;br /&gt;
def scheduler_worker(vk):&lt;br /&gt;
    while True:&lt;br /&gt;
        time.sleep(5)&lt;br /&gt;
        conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
        c = conn.cursor()&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        c.execute(&amp;quot;SELECT id, user_id, text FROM reminders WHERE execute_at &amp;lt;= ? AND is_sent = 0&amp;quot;, (now,))&lt;br /&gt;
        tasks = c.fetchall()&lt;br /&gt;
        for task in tasks:&lt;br /&gt;
            task_id, user_id, text = task&lt;br /&gt;
            try:&lt;br /&gt;
                print(f&amp;quot;📤 Отправка: {text}&amp;quot;)&lt;br /&gt;
                send_message(vk, user_id, f&amp;quot;⏰ Напоминание: {text}&amp;quot;)&lt;br /&gt;
                c.execute(&amp;quot;UPDATE reminders SET is_sent = 1 WHERE id = ?&amp;quot;, (task_id,))&lt;br /&gt;
                conn.commit()&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка: {e}&amp;quot;)&lt;br /&gt;
        conn.close()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    init_db()&lt;br /&gt;
    vk_session = VkApi(token=TOKEN)&lt;br /&gt;
    vk = vk_session.get_api()&lt;br /&gt;
    longpoll = VkBotLongPoll(vk_session, GROUP_ID)&lt;br /&gt;
    &lt;br /&gt;
    threading.Thread(target=scheduler_worker, args=(vk,), daemon=True).start()&lt;br /&gt;
    print(&amp;quot;✅ Бот запущен...&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    for event in longpoll.listen():&lt;br /&gt;
        print(f&amp;quot;⚡ СОБЫТИЕ: {event.type}&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает ЛЮБОЕ событие&lt;br /&gt;
        &lt;br /&gt;
        if event.type == VkBotEventType.MESSAGE_NEW:&lt;br /&gt;
            print(f&amp;quot;📩 НОВОЕ СООБЩЕНИЕ!&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает именно сообщение&lt;br /&gt;
            try:&lt;br /&gt;
                message = event.object.message&lt;br /&gt;
                text = message[&#039;text&#039;]&lt;br /&gt;
                user_id = message[&#039;from_id&#039;]&lt;br /&gt;
                peer_id = message[&#039;peer_id&#039;]&lt;br /&gt;
                &lt;br /&gt;
                print(f&amp;quot;👤 От: {user_id} | Текст: {text}&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                execute_at = parse_time(text)&lt;br /&gt;
                if execute_at:&lt;br /&gt;
                    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
                    c = conn.cursor()&lt;br /&gt;
                    c.execute(&amp;quot;INSERT INTO reminders (user_id, text, execute_at, is_sent) VALUES (?, ?, ?, 0)&amp;quot;, &lt;br /&gt;
                              (user_id, text, execute_at))&lt;br /&gt;
                    conn.commit()&lt;br /&gt;
                    conn.close()&lt;br /&gt;
                    send_message(vk, peer_id, &amp;quot;✅ Напоминание установлено!&amp;quot;)&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка обработки: {e}&amp;quot;)&lt;br /&gt;
                import traceback&lt;br /&gt;
                traceback.print_exc()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шаг 3. Проверка работы бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:РаботаБотаНапоминаний.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45308</id>
		<title>ВК-бот для напоминаний</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45308"/>
		<updated>2026-03-25T10:50:21Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Цель проекта:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Разработка автоматизированного бота для социальной сети ВКонтакте, способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Задачи:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Изучить документацию VK API для работы с сообщениями сообществ.&lt;br /&gt;
&lt;br /&gt;
2. Реализовать механизм аутентификации через токен доступа.&lt;br /&gt;
&lt;br /&gt;
3.Организовать хранение данных о задачах в локальной базе данных (SQLite).&lt;br /&gt;
&lt;br /&gt;
4. Реализовать парсинг естественного языка для распознавания времени напоминания.&lt;br /&gt;
&lt;br /&gt;
5. Настроить асинхронную работу планировщика задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Область знаний&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Среда разработки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
vk_api, Python, Bot Long Poll, requests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаги разработки:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Создание Вк сообщества)&lt;br /&gt;
    B --&amp;gt; C(Получить API-ключ Сообщества MemoPing)&lt;br /&gt;
    C --&amp;gt; D(Установить библиотеки)&lt;br /&gt;
    D --&amp;gt; E(Написать код бота)&lt;br /&gt;
    E --&amp;gt; F[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Логика работы бота:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь вводит сообщение с напоминанием через N минут/часов] --&amp;gt; B(Бот получает сообщение через VkBotLongPoll)&lt;br /&gt;
    B --&amp;gt; C(Парсит текст: ищет шаблон «через ... минут/часов»)&lt;br /&gt;
    C --&amp;gt; D{Шаблон найден?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Отправляет ошибку или игнорирует]&lt;br /&gt;
    D --&amp;gt;|Да| F(Вычисляет execute_at = текущее время + задержка)&lt;br /&gt;
    F --&amp;gt; G(Отправляет запрос к SQLite: INSERT напоминания)&lt;br /&gt;
    G --&amp;gt; H(Сохраняет запись: user_id, текст, execute_at, is_sent=0)&lt;br /&gt;
    H --&amp;gt; I(Отправляет подтверждение: «Напоминание установлено!»)&lt;br /&gt;
    I --&amp;gt; J[Готово]&lt;br /&gt;
&lt;br /&gt;
    K[Отдельный поток scheduler_worker] --&amp;gt; L(Каждые 5 секунд проверяет SQLite)&lt;br /&gt;
    L --&amp;gt; M(Запрос: SELECT напоминаний где execute_at &amp;lt;= now и is_sent = 0)&lt;br /&gt;
    M --&amp;gt; N{Найдены задачи?}&lt;br /&gt;
    N --&amp;gt;|Нет| L&lt;br /&gt;
    N --&amp;gt;|Да| O(Для каждой задачи отправляет сообщение пользователю)&lt;br /&gt;
    O --&amp;gt; P(Обновляет запись: SET is_sent = 1)&lt;br /&gt;
    P --&amp;gt; J&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Шаг 1. Создание группы. Получение API. Подключение бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:CreatebotMemo.png]]&lt;br /&gt;
&lt;br /&gt;
Шаг 2. Создание файлов и кода&lt;br /&gt;
&lt;br /&gt;
[[Файл:ФайлыБотаНапоминаний.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
import sqlite3&lt;br /&gt;
import threading&lt;br /&gt;
import re&lt;br /&gt;
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType&lt;br /&gt;
from vk_api import VkApi&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
TOKEN = os.getenv(&#039;VK_TOKEN&#039;)&lt;br /&gt;
GROUP_ID = int(os.getenv(&#039;VK_GROUP_ID&#039;))&lt;br /&gt;
&lt;br /&gt;
# ... (функции init_db, parse_time, send_message оставь как были) ...&lt;br /&gt;
def init_db():&lt;br /&gt;
    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
    c = conn.cursor()&lt;br /&gt;
    c.execute(&#039;&#039;&#039;CREATE TABLE IF NOT EXISTS reminders &lt;br /&gt;
                 (id INTEGER PRIMARY KEY, user_id INTEGER, text TEXT, execute_at INTEGER, is_sent INTEGER)&#039;&#039;&#039;)&lt;br /&gt;
    conn.commit()&lt;br /&gt;
    conn.close()&lt;br /&gt;
&lt;br /&gt;
def parse_time(text):&lt;br /&gt;
    pattern = r&amp;quot;через\s+(\d+)\s*(минут|мин|часов|час)&amp;quot;&lt;br /&gt;
    match = re.search(pattern, text.lower())&lt;br /&gt;
    if match:&lt;br /&gt;
        value = int(match.group(1))&lt;br /&gt;
        unit = match.group(2)&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        add_sec = value * 60 if unit in [&#039;минут&#039;, &#039;мин&#039;] else value * 3600&lt;br /&gt;
        return now + add_sec&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def send_message(vk, user_id, message):&lt;br /&gt;
    vk.messages.send(peer_id=user_id, message=message, random_id=0)&lt;br /&gt;
&lt;br /&gt;
def scheduler_worker(vk):&lt;br /&gt;
    while True:&lt;br /&gt;
        time.sleep(5)&lt;br /&gt;
        conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
        c = conn.cursor()&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        c.execute(&amp;quot;SELECT id, user_id, text FROM reminders WHERE execute_at &amp;lt;= ? AND is_sent = 0&amp;quot;, (now,))&lt;br /&gt;
        tasks = c.fetchall()&lt;br /&gt;
        for task in tasks:&lt;br /&gt;
            task_id, user_id, text = task&lt;br /&gt;
            try:&lt;br /&gt;
                print(f&amp;quot;📤 Отправка: {text}&amp;quot;)&lt;br /&gt;
                send_message(vk, user_id, f&amp;quot;⏰ Напоминание: {text}&amp;quot;)&lt;br /&gt;
                c.execute(&amp;quot;UPDATE reminders SET is_sent = 1 WHERE id = ?&amp;quot;, (task_id,))&lt;br /&gt;
                conn.commit()&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка: {e}&amp;quot;)&lt;br /&gt;
        conn.close()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    init_db()&lt;br /&gt;
    vk_session = VkApi(token=TOKEN)&lt;br /&gt;
    vk = vk_session.get_api()&lt;br /&gt;
    longpoll = VkBotLongPoll(vk_session, GROUP_ID)&lt;br /&gt;
    &lt;br /&gt;
    threading.Thread(target=scheduler_worker, args=(vk,), daemon=True).start()&lt;br /&gt;
    print(&amp;quot;✅ Бот запущен...&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    for event in longpoll.listen():&lt;br /&gt;
        print(f&amp;quot;⚡ СОБЫТИЕ: {event.type}&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает ЛЮБОЕ событие&lt;br /&gt;
        &lt;br /&gt;
        if event.type == VkBotEventType.MESSAGE_NEW:&lt;br /&gt;
            print(f&amp;quot;📩 НОВОЕ СООБЩЕНИЕ!&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает именно сообщение&lt;br /&gt;
            try:&lt;br /&gt;
                message = event.object.message&lt;br /&gt;
                text = message[&#039;text&#039;]&lt;br /&gt;
                user_id = message[&#039;from_id&#039;]&lt;br /&gt;
                peer_id = message[&#039;peer_id&#039;]&lt;br /&gt;
                &lt;br /&gt;
                print(f&amp;quot;👤 От: {user_id} | Текст: {text}&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                execute_at = parse_time(text)&lt;br /&gt;
                if execute_at:&lt;br /&gt;
                    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
                    c = conn.cursor()&lt;br /&gt;
                    c.execute(&amp;quot;INSERT INTO reminders (user_id, text, execute_at, is_sent) VALUES (?, ?, ?, 0)&amp;quot;, &lt;br /&gt;
                              (user_id, text, execute_at))&lt;br /&gt;
                    conn.commit()&lt;br /&gt;
                    conn.close()&lt;br /&gt;
                    send_message(vk, peer_id, &amp;quot;✅ Напоминание установлено!&amp;quot;)&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка обработки: {e}&amp;quot;)&lt;br /&gt;
                import traceback&lt;br /&gt;
                traceback.print_exc()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шаг 3. Проверка работы бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:РаботаБотаНапоминаний.png]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45307</id>
		<title>ВК-бот для напоминаний</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45307"/>
		<updated>2026-03-25T10:47:35Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Цель проекта:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Разработка автоматизированного бота для социальной сети ВКонтакте, способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Задачи:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Изучить документацию VK API для работы с сообщениями сообществ.&lt;br /&gt;
&lt;br /&gt;
2. Реализовать механизм аутентификации через токен доступа.&lt;br /&gt;
&lt;br /&gt;
3.Организовать хранение данных о задачах в локальной базе данных (SQLite).&lt;br /&gt;
&lt;br /&gt;
4. Реализовать парсинг естественного языка для распознавания времени напоминания.&lt;br /&gt;
&lt;br /&gt;
5. Настроить асинхронную работу планировщика задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Область знаний&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Среда разработки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
vk_api, Python, Bot Long Poll, requests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаги разработки:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Создание Вк сообщества)&lt;br /&gt;
    B --&amp;gt; C(Получить API-ключ Сообщества MemoPing)&lt;br /&gt;
    C --&amp;gt; D(Установить библиотеки)&lt;br /&gt;
    D --&amp;gt; E(Написать код бота)&lt;br /&gt;
    E --&amp;gt; F[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Логика работы бота:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь вводит сообщение с напоминанием через N минут/часов] --&amp;gt; B(Бот получает сообщение через VkBotLongPoll)&lt;br /&gt;
    B --&amp;gt; C(Парсит текст: ищет шаблон «через ... минут/часов»)&lt;br /&gt;
    C --&amp;gt; D{Шаблон найден?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Отправляет ошибку или игнорирует]&lt;br /&gt;
    D --&amp;gt;|Да| F(Вычисляет execute_at = текущее время + задержка)&lt;br /&gt;
    F --&amp;gt; G(Отправляет запрос к SQLite: INSERT напоминания)&lt;br /&gt;
    G --&amp;gt; H(Сохраняет запись: user_id, текст, execute_at, is_sent=0)&lt;br /&gt;
    H --&amp;gt; I(Отправляет подтверждение: «Напоминание установлено!»)&lt;br /&gt;
    I --&amp;gt; J[Готово]&lt;br /&gt;
&lt;br /&gt;
    K[Отдельный поток scheduler_worker] --&amp;gt; L(Каждые 5 секунд проверяет SQLite)&lt;br /&gt;
    L --&amp;gt; M(Запрос: SELECT напоминаний где execute_at &amp;lt;= now и is_sent = 0)&lt;br /&gt;
    M --&amp;gt; N{Найдены задачи?}&lt;br /&gt;
    N --&amp;gt;|Нет| L&lt;br /&gt;
    N --&amp;gt;|Да| O(Для каждой задачи отправляет сообщение пользователю)&lt;br /&gt;
    O --&amp;gt; P(Обновляет запись: SET is_sent = 1)&lt;br /&gt;
    P --&amp;gt; J&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Шаг 1. Создание группы. Получение API. Подключение бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:CreatebotMemo.png|мини]]&lt;br /&gt;
&lt;br /&gt;
Шаг 2. Создание файлов и кода&lt;br /&gt;
&lt;br /&gt;
[[Файл:ФайлыБотаНапоминаний.png|мини]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import time&lt;br /&gt;
import sqlite3&lt;br /&gt;
import threading&lt;br /&gt;
import re&lt;br /&gt;
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType&lt;br /&gt;
from vk_api import VkApi&lt;br /&gt;
from dotenv import load_dotenv&lt;br /&gt;
&lt;br /&gt;
load_dotenv()&lt;br /&gt;
&lt;br /&gt;
TOKEN = os.getenv(&#039;VK_TOKEN&#039;)&lt;br /&gt;
GROUP_ID = int(os.getenv(&#039;VK_GROUP_ID&#039;))&lt;br /&gt;
&lt;br /&gt;
# ... (функции init_db, parse_time, send_message оставь как были) ...&lt;br /&gt;
def init_db():&lt;br /&gt;
    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
    c = conn.cursor()&lt;br /&gt;
    c.execute(&#039;&#039;&#039;CREATE TABLE IF NOT EXISTS reminders &lt;br /&gt;
                 (id INTEGER PRIMARY KEY, user_id INTEGER, text TEXT, execute_at INTEGER, is_sent INTEGER)&#039;&#039;&#039;)&lt;br /&gt;
    conn.commit()&lt;br /&gt;
    conn.close()&lt;br /&gt;
&lt;br /&gt;
def parse_time(text):&lt;br /&gt;
    pattern = r&amp;quot;через\s+(\d+)\s*(минут|мин|часов|час)&amp;quot;&lt;br /&gt;
    match = re.search(pattern, text.lower())&lt;br /&gt;
    if match:&lt;br /&gt;
        value = int(match.group(1))&lt;br /&gt;
        unit = match.group(2)&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        add_sec = value * 60 if unit in [&#039;минут&#039;, &#039;мин&#039;] else value * 3600&lt;br /&gt;
        return now + add_sec&lt;br /&gt;
    return None&lt;br /&gt;
&lt;br /&gt;
def send_message(vk, user_id, message):&lt;br /&gt;
    vk.messages.send(peer_id=user_id, message=message, random_id=0)&lt;br /&gt;
&lt;br /&gt;
def scheduler_worker(vk):&lt;br /&gt;
    while True:&lt;br /&gt;
        time.sleep(5)&lt;br /&gt;
        conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
        c = conn.cursor()&lt;br /&gt;
        now = int(time.time())&lt;br /&gt;
        c.execute(&amp;quot;SELECT id, user_id, text FROM reminders WHERE execute_at &amp;lt;= ? AND is_sent = 0&amp;quot;, (now,))&lt;br /&gt;
        tasks = c.fetchall()&lt;br /&gt;
        for task in tasks:&lt;br /&gt;
            task_id, user_id, text = task&lt;br /&gt;
            try:&lt;br /&gt;
                print(f&amp;quot;📤 Отправка: {text}&amp;quot;)&lt;br /&gt;
                send_message(vk, user_id, f&amp;quot;⏰ Напоминание: {text}&amp;quot;)&lt;br /&gt;
                c.execute(&amp;quot;UPDATE reminders SET is_sent = 1 WHERE id = ?&amp;quot;, (task_id,))&lt;br /&gt;
                conn.commit()&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка: {e}&amp;quot;)&lt;br /&gt;
        conn.close()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    init_db()&lt;br /&gt;
    vk_session = VkApi(token=TOKEN)&lt;br /&gt;
    vk = vk_session.get_api()&lt;br /&gt;
    longpoll = VkBotLongPoll(vk_session, GROUP_ID)&lt;br /&gt;
    &lt;br /&gt;
    threading.Thread(target=scheduler_worker, args=(vk,), daemon=True).start()&lt;br /&gt;
    print(&amp;quot;✅ Бот запущен...&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    for event in longpoll.listen():&lt;br /&gt;
        print(f&amp;quot;⚡ СОБЫТИЕ: {event.type}&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает ЛЮБОЕ событие&lt;br /&gt;
        &lt;br /&gt;
        if event.type == VkBotEventType.MESSAGE_NEW:&lt;br /&gt;
            print(f&amp;quot;📩 НОВОЕ СООБЩЕНИЕ!&amp;quot;) # &amp;lt;&amp;lt;&amp;lt; Показывает именно сообщение&lt;br /&gt;
            try:&lt;br /&gt;
                message = event.object.message&lt;br /&gt;
                text = message[&#039;text&#039;]&lt;br /&gt;
                user_id = message[&#039;from_id&#039;]&lt;br /&gt;
                peer_id = message[&#039;peer_id&#039;]&lt;br /&gt;
                &lt;br /&gt;
                print(f&amp;quot;👤 От: {user_id} | Текст: {text}&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                execute_at = parse_time(text)&lt;br /&gt;
                if execute_at:&lt;br /&gt;
                    conn = sqlite3.connect(&#039;database.db&#039;)&lt;br /&gt;
                    c = conn.cursor()&lt;br /&gt;
                    c.execute(&amp;quot;INSERT INTO reminders (user_id, text, execute_at, is_sent) VALUES (?, ?, ?, 0)&amp;quot;, &lt;br /&gt;
                              (user_id, text, execute_at))&lt;br /&gt;
                    conn.commit()&lt;br /&gt;
                    conn.close()&lt;br /&gt;
                    send_message(vk, peer_id, &amp;quot;✅ Напоминание установлено!&amp;quot;)&lt;br /&gt;
            except Exception as e:&lt;br /&gt;
                print(f&amp;quot;❌ Ошибка обработки: {e}&amp;quot;)&lt;br /&gt;
                import traceback&lt;br /&gt;
                traceback.print_exc()&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шаг 3. Проверка работы бота&lt;br /&gt;
&lt;br /&gt;
[[Файл:РаботаБотаНапоминаний.png|мини]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CreatebotMemo.png&amp;diff=45306</id>
		<title>Файл:CreatebotMemo.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:CreatebotMemo.png&amp;diff=45306"/>
		<updated>2026-03-25T10:45:02Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вк-бот напоминаний&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B%D0%91%D0%BE%D1%82%D0%B0%D0%9D%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9.png&amp;diff=45305</id>
		<title>Файл:ФайлыБотаНапоминаний.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A4%D0%B0%D0%B9%D0%BB%D1%8B%D0%91%D0%BE%D1%82%D0%B0%D0%9D%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9.png&amp;diff=45305"/>
		<updated>2026-03-25T10:38:09Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вк-бот для напоминаний&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%91%D0%BE%D1%82%D0%B0%D0%9D%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9.png&amp;diff=45304</id>
		<title>Файл:РаботаБотаНапоминаний.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%91%D0%BE%D1%82%D0%B0%D0%9D%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9.png&amp;diff=45304"/>
		<updated>2026-03-25T10:36:35Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Вк-бот для напоминаний&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45303</id>
		<title>ВК-бот для напоминаний</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%92%D0%9A-%D0%B1%D0%BE%D1%82_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%B0%D0%BF%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9&amp;diff=45303"/>
		<updated>2026-03-25T10:33:47Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: Новая страница: «&amp;#039;&amp;#039;&amp;#039;Цель проекта:&amp;#039;&amp;#039;&amp;#039;  Разработка автоматизированного бота для социальной сети ВКонтакте, способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.  &amp;#039;&amp;#039;&amp;#039;Задачи:&amp;#039;&amp;#039;&amp;#039;  1. Изучить д...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Цель проекта:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Разработка автоматизированного бота для социальной сети ВКонтакте, способного принимать текстовые команды от пользователей, планировать задачи и отправлять уведомления в заданное время с использованием VK API.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Задачи:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Изучить документацию VK API для работы с сообщениями сообществ.&lt;br /&gt;
&lt;br /&gt;
2. Реализовать механизм аутентификации через токен доступа.&lt;br /&gt;
&lt;br /&gt;
3.Организовать хранение данных о задачах в локальной базе данных (SQLite).&lt;br /&gt;
&lt;br /&gt;
4. Реализовать парсинг естественного языка для распознавания времени напоминания.&lt;br /&gt;
&lt;br /&gt;
5. Настроить асинхронную работу планировщика задач.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Область знаний&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программирование на Python, Разработка чат-ботов, Работа с API, Веб-технологии&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Среда разработки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
vk_api, Python, Bot Long Poll, requests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Шаги разработки:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Создание Вк сообщества)&lt;br /&gt;
    B --&amp;gt; C(Получить API-ключ Сообщества MemoPing)&lt;br /&gt;
    C --&amp;gt; D(Установить библиотеки)&lt;br /&gt;
    D --&amp;gt; E(Написать код бота)&lt;br /&gt;
    E --&amp;gt; F[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Логика работы бота:&#039;&#039;&#039;&lt;br /&gt;
{{#mermaid:&lt;br /&gt;
flowchart TB&lt;br /&gt;
    A[Пользователь вводит сообщение с напоминанием через N минут/часов] --&amp;gt; B(Бот получает сообщение через VkBotLongPoll)&lt;br /&gt;
    B --&amp;gt; C(Парсит текст: ищет шаблон «через ... минут/часов»)&lt;br /&gt;
    C --&amp;gt; D{Шаблон найден?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Отправляет ошибку или игнорирует]&lt;br /&gt;
    D --&amp;gt;|Да| F(Вычисляет execute_at = текущее время + задержка)&lt;br /&gt;
    F --&amp;gt; G(Отправляет запрос к SQLite: INSERT напоминания)&lt;br /&gt;
    G --&amp;gt; H(Сохраняет запись: user_id, текст, execute_at, is_sent=0)&lt;br /&gt;
    H --&amp;gt; I(Отправляет подтверждение: «Напоминание установлено!»)&lt;br /&gt;
    I --&amp;gt; J[Готово]&lt;br /&gt;
&lt;br /&gt;
    K[Отдельный поток scheduler_worker] --&amp;gt; L(Каждые 5 секунд проверяет SQLite)&lt;br /&gt;
    L --&amp;gt; M(Запрос: SELECT напоминаний где execute_at &amp;lt;= now и is_sent = 0)&lt;br /&gt;
    M --&amp;gt; N{Найдены задачи?}&lt;br /&gt;
    N --&amp;gt;|Нет| L&lt;br /&gt;
    N --&amp;gt;|Да| O(Для каждой задачи отправляет сообщение пользователю)&lt;br /&gt;
    O --&amp;gt; P(Обновляет запись: SET is_sent = 1)&lt;br /&gt;
    P --&amp;gt; J&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45297</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45297"/>
		<updated>2026-03-25T08:43:14Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета, ВК-бот для напоминаний&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45296</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45296"/>
		<updated>2026-03-25T08:42:55Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45250</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45250"/>
		<updated>2026-03-24T12:57:56Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета, Репетитор-бот по математике с напоминаниями о ДЗ&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45247</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=45247"/>
		<updated>2026-03-24T11:41:14Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета, Telegram Bot для напоминаний на базе Bot API&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29613</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29613"/>
		<updated>2025-05-31T08:03:17Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Расчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
💰 Контролируй бюджет легко!&lt;br /&gt;
Планируешь мероприятие и хочешь избежать лишних трат? Наше приложение поможет точно рассчитать бюджет и распределить средства на важные задачи!&lt;br /&gt;
&lt;br /&gt;
📌 Как это работает?&lt;br /&gt;
&lt;br /&gt;
Введи основные данные – укажи название, общий бюджет и дату мероприятия.&lt;br /&gt;
&lt;br /&gt;
Распредели деньги по задачам – добавь до 3 ключевых статей расходов.&lt;br /&gt;
&lt;br /&gt;
Получи готовый расчет – приложение покажет, сколько потрачено и сколько осталось!&lt;br /&gt;
&lt;br /&gt;
✅ Почему стоит попробовать?&lt;br /&gt;
✔ Простота – интуитивно понятный интерфейс.&lt;br /&gt;
✔ Быстрый расчет – все итоги в один клик.&lt;br /&gt;
✔ Контроль расходов – никаких неожиданных перерасходов!&lt;br /&gt;
&lt;br /&gt;
💡 Идеально для: свадеб, корпоративов, дней рождения, поездок и других событий!&lt;br /&gt;
&lt;br /&gt;
Скачай сейчас и планируй бюджет без стресса! 🚀&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;br /&gt;
==Диаграмма работы приложения &amp;quot;Расчет бюджета&amp;quot;==&lt;br /&gt;
&amp;lt;graphviz&amp;gt;&lt;br /&gt;
digraph BudgetApp {&lt;br /&gt;
    rankdir=TB;&lt;br /&gt;
    node [fontsize=10, shape=&amp;quot;box&amp;quot;, style=&amp;quot;rounded&amp;quot;, width=1.5];&lt;br /&gt;
    edge [fontsize=9];&lt;br /&gt;
&lt;br /&gt;
    // Основные узлы&lt;br /&gt;
    &amp;quot;Приложение&amp;quot; -&amp;gt; &amp;quot;Экран 1: Ввод данных&amp;quot; [label=&amp;quot;открывает&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Экран 2: Распределение бюджета&amp;quot; [label=&amp;quot;кнопка &#039;Далее&#039;&amp;quot;];&lt;br /&gt;
    &lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Экран 3: Итоговый расчёт&amp;quot; [label=&amp;quot;кнопка &#039;Рассчитать&#039;&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Экран 1: Ввод данных&amp;quot; [label=&amp;quot;кнопка &#039;Новый расчёт&#039;&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 1&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Название мероприятия&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Общий бюджет&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Дата&amp;quot; [label=&amp;quot;выбор из календаря&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Пометки&amp;quot; [label=&amp;quot;текстовое поле&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 2&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 1 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 2 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 3 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 3&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Общий бюджет: ХХХ ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Затрачено: YYY ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Осталось: ZZZ ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    graph [dpi=150, size=&amp;quot;5,7!&amp;quot;];&lt;br /&gt;
    nodesep=0.3;&lt;br /&gt;
    ranksep=0.4;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graphviz&amp;gt;&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29594</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29594"/>
		<updated>2025-05-31T06:55:29Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: /* Главная страница приложения: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Расчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
💰 Контролируй бюджет легко!&lt;br /&gt;
Планируешь мероприятие и хочешь избежать лишних трат? Наше приложение поможет точно рассчитать бюджет и распределить средства на важные задачи!&lt;br /&gt;
&lt;br /&gt;
📌 Как это работает?&lt;br /&gt;
&lt;br /&gt;
Введи основные данные – укажи название, общий бюджет и дату мероприятия.&lt;br /&gt;
&lt;br /&gt;
Распредели деньги по задачам – добавь до 3 ключевых статей расходов.&lt;br /&gt;
&lt;br /&gt;
Получи готовый расчет – приложение покажет, сколько потрачено и сколько осталось!&lt;br /&gt;
&lt;br /&gt;
✅ Почему стоит попробовать?&lt;br /&gt;
✔ Простота – интуитивно понятный интерфейс.&lt;br /&gt;
✔ Быстрый расчет – все итоги в один клик.&lt;br /&gt;
✔ Контроль расходов – никаких неожиданных перерасходов!&lt;br /&gt;
&lt;br /&gt;
💡 Идеально для: свадеб, корпоративов, дней рождения, поездок и других событий!&lt;br /&gt;
&lt;br /&gt;
Скачай сейчас и планируй бюджет без стресса! 🚀&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;br /&gt;
==Диаграмма работы приложения &amp;quot;Расчет бюджета&amp;quot;==&lt;br /&gt;
&amp;lt;graphviz&amp;gt;&lt;br /&gt;
digraph BudgetApp {&lt;br /&gt;
    rankdir=TB;&lt;br /&gt;
    node [fontsize=10, shape=&amp;quot;box&amp;quot;, style=&amp;quot;rounded&amp;quot;, width=1.5];&lt;br /&gt;
    edge [fontsize=9];&lt;br /&gt;
&lt;br /&gt;
    // Основные узлы&lt;br /&gt;
    &amp;quot;Приложение&amp;quot; -&amp;gt; &amp;quot;Экран 1: Ввод данных&amp;quot; [label=&amp;quot;открывает&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Экран 2: Распределение бюджета&amp;quot; [label=&amp;quot;кнопка &#039;Далее&#039;&amp;quot;];&lt;br /&gt;
    &lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Экран 3: Итоговый расчёт&amp;quot; [label=&amp;quot;кнопка &#039;Рассчитать&#039;&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Экран 1: Ввод данных&amp;quot; [label=&amp;quot;кнопка &#039;Новый расчёт&#039;&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 1&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Название мероприятия&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Общий бюджет&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Дата&amp;quot; [label=&amp;quot;выбор из календаря&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 1: Ввод данных&amp;quot; -&amp;gt; &amp;quot;Пометки&amp;quot; [label=&amp;quot;текстовое поле&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 2&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 1 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 2 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 2: Распределение бюджета&amp;quot; -&amp;gt; &amp;quot;Задача 3 + Сумма&amp;quot; [label=&amp;quot;поле ввода&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    // Подробности для Экран 3&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Общий бюджет: ХХХ ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Затрачено: YYY ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран 3: Итоговый расчёт&amp;quot; -&amp;gt; &amp;quot;Осталось: ZZZ ₽&amp;quot; [label=&amp;quot;отображение&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    graph [dpi=150, size=&amp;quot;5,7!&amp;quot;];&lt;br /&gt;
    nodesep=0.3;&lt;br /&gt;
    ranksep=0.4;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graphviz&amp;gt;&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29589</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29589"/>
		<updated>2025-05-31T06:49:00Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: /* Описание приложения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Расчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
💰 Контролируй бюджет легко!&lt;br /&gt;
Планируешь мероприятие и хочешь избежать лишних трат? Наше приложение поможет точно рассчитать бюджет и распределить средства на важные задачи!&lt;br /&gt;
&lt;br /&gt;
📌 Как это работает?&lt;br /&gt;
&lt;br /&gt;
Введи основные данные – укажи название, общий бюджет и дату мероприятия.&lt;br /&gt;
&lt;br /&gt;
Распредели деньги по задачам – добавь до 3 ключевых статей расходов.&lt;br /&gt;
&lt;br /&gt;
Получи готовый расчет – приложение покажет, сколько потрачено и сколько осталось!&lt;br /&gt;
&lt;br /&gt;
✅ Почему стоит попробовать?&lt;br /&gt;
✔ Простота – интуитивно понятный интерфейс.&lt;br /&gt;
✔ Быстрый расчет – все итоги в один клик.&lt;br /&gt;
✔ Контроль расходов – никаких неожиданных перерасходов!&lt;br /&gt;
&lt;br /&gt;
💡 Идеально для: свадеб, корпоративов, дней рождения, поездок и других событий!&lt;br /&gt;
&lt;br /&gt;
Скачай сейчас и планируй бюджет без стресса! 🚀&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29526</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29526"/>
		<updated>2025-05-31T02:15:48Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29525</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29525"/>
		<updated>2025-05-31T02:15:40Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Расчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29521</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29521"/>
		<updated>2025-05-31T02:10:38Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Рассчет бюджета&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29520</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29520"/>
		<updated>2025-05-31T02:08:59Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: /* Приложение &amp;quot;Рассчет бюджета&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Рассчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29519</id>
		<title>Расчет бюджета</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D0%B1%D1%8E%D0%B4%D0%B6%D0%B5%D1%82%D0%B0&amp;diff=29519"/>
		<updated>2025-05-31T02:08:20Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: Новая страница: «{{Scripting Tutorials |Description=Подготовлено Татариновой Екатериной Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить,...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Татариновой Екатериной&lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=18&lt;br /&gt;
|Environment=Thunkable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;Рассчет бюджета&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/projectPage/683a166e2c1a04f670b20259&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Приложение создано для тех, кому важно хорошо организовать мероприятие и при этом уложиться в бюджет. У меня скоро день рождения, поэтому сейчас мне нужно понимать, что необходимо сделать, купить, найти и сколько это будет стоить, затем посмотреть и оценить, хватает ли изначально выделенного бюджета и на что уходит большая часть средств. На первом экране создается список задач, которые нужно сделать для праздника.&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29518</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29518"/>
		<updated>2025-05-31T02:01:29Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Расчет бюджета&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29517</id>
		<title>Участник:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:TatarinovaEM&amp;diff=29517"/>
		<updated>2025-05-31T02:00:30Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Управление, Большие данные, Алгебра&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:TatarinovaEM&amp;diff=28599</id>
		<title>Обсуждение участника:TatarinovaEM</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:TatarinovaEM&amp;diff=28599"/>
		<updated>2025-04-17T10:41:14Z</updated>

		<summary type="html">&lt;p&gt;TatarinovaEM: Новая страница: «{{UserMGPU |Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Большие данные |Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL |Position=Бакалавриат |Profile=Математика, Информатика, Обществознание, Экономика |PedDirection=Нет }} Категория: UserMGPU Категория: АДЭУ-221»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Field_of_knowledge=Математика, Экономика, Искусственный интеллект, Большие данные&lt;br /&gt;
|Environment=Python, SQL, JavaScrip, PHP, CSS, HTML, 1С, MySQL, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Математика, Информатика, Обществознание, Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>TatarinovaEM</name></author>
	</entry>
</feed>