мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
zadanie_bonusnoe._telegrambot [2024/04/26 13:47] – создано wikiadminzadanie_bonusnoe._telegrambot [2024/05/25 03:47] (текущий) wikiadmin
Строка 1: Строка 1:
-Установить пакет python3-venv+======= Задание бонусное. TelegramBot =======
  
-Создать виртуальное пространство  +Устанавливаем пакет python3-venv 
-python3 -venv tgbot+<code>sudo apt install python3-venv</code>
  
-создался каталог tgbot+Создаем виртуальное окружение 
 +<code>python3 -m venv tgbot</code>
  
-Переходим в него +Создался каталог tgbot. Переходим в него 
-cd tgbot+<code>cd tgbot</code>
  
-активируем вирутальную среду скриптом activate +Активируем вирутальное окружение скриптом activate 
-source bin/activate+<code>source bin/activate</code>
  
-(tgbot) в начале командной строки означает, что мы находимся внутри виртуальной среды+(tgbot) в начале командной строки означает, что мы находимся внутри виртуального окружения
  
-установим пакет aiogram: +Для выхода из виртуального окружения можно набрать команду "deactivate", но сейчас нам это не нужно.
-pip install aiogram+
  
-убедимся, что установили пакет: +Установим библиотеку aiogram внутри виртуального окружения: 
-pip list | grep aiogram+<code>pip install aiogram</code> 
 + 
 +Убедимся, что установили библиотеку
 +<code>pip list | grep aiogram</code> 
 + 
 +Создаём скрипт Python: 
 + 
 +<code> 
 +import asyncio 
 +import logging 
 +import sqlite3 
 +from aiogram import Router, F, Bot, Dispatcher 
 +from aiogram.types import Message, ReplyKeyboardMarkup, KeyboardButton 
 +from aiogram.filters import CommandStart, Command 
 + 
 +router = Router() 
 +TOKEN='xxx' 
 +maink = ReplyKeyboardMarkup (keyboard=[[KeyboardButton(text='Список пользователей')]], resize_keyboard=True) 
 + 
 +@router.message (CommandStart()) 
 +async def cmd_start(message: Message): 
 +    await message.answer('Привет!', reply_markup = maink) 
 + 
 +@router.message (F.text == 'Список пользователей'
 +async def database (message: Message): 
 +    con = sqlite3.connect('/home/bsk23-01-student-1/python/pythondb2'
 +    cur = con.cursor() 
 +    cur.execute('SELECT * FROM users'
 +    data_list = cur.fetchall() 
 +    con.close() 
 +    for data in data_list: 
 +        await message.answer(f'Имя {data[0]}; Boзpacт {data[1]}'
 + 
 +@router.message() 
 +async def word (message: Message): 
 +    await message.reply('Я тебя не понимаю!'
 + 
 +async def main(): 
 +    bot = Bot(token=TOKEN) 
 +    dp = Dispatcher() 
 +    dp.include_router(router) 
 +    await dp.start_polling (bot) 
 + 
 +if __name__=="__main__": 
 +    logging.basicConfig(level=logging.INFO) 
 +    try: 
 +        asyncio.run(main()) 
 +    except KeyboardInterrupt: 
 +        print('Exit'
 + 
 +</code> 
 + 
 +Создаём бота в TG: 
 + 
 +В TG находим @BotFather и запускаем его 
 + 
 +<code>/newbot</code> 
 +Сочиняем имя бота и имя пользователя бота 
 +Например "My_WiFi_Users_bot" 
 + 
 +Получаем токен и записываем его в значение переменную TOKEN в скрипте. 
 + 
 +Запускаем наш Python-скрипт. Должны увидеть следующее: 
 + 
 +<code> 
 +(tgbot) bsk23-01-student-1@BSK23-01-1:~/tgbot$ python3 tgbot.py 
 +INFO:aiogram.dispatcher:Start polling 
 +INFO:aiogram.dispatcher: Run polling for bot @My_WiFi_Users_bot id=6937598587 
 +'My_WiFi_Users' 
 +</code> 
 + 
 +Открываем на телефоне Telegram, подключаемся к своему боту, запускаем! 
 + 
 +{{:users_in_tg.jpg?400|}}