Разработан набросок чат-бота
Этот коммит содержится в:
Коммит
a763de4335
1
bot/__init__.py
Обычный файл
1
bot/__init__.py
Обычный файл
@ -0,0 +1 @@
|
||||
from .main import dp, bot
|
143
bot/main.py
Обычный файл
143
bot/main.py
Обычный файл
@ -0,0 +1,143 @@
|
||||
import asyncio
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.client.default import DefaultBotProperties
|
||||
from aiogram.enums import ParseMode
|
||||
from aiogram.filters import CommandStart
|
||||
from aiogram.types import Message, Poll, InputPollOption
|
||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
|
||||
import config
|
||||
|
||||
|
||||
dp = Dispatcher()
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
|
||||
@dp.message(CommandStart())
|
||||
async def command_start_handler(
|
||||
message: Message,
|
||||
):
|
||||
print(message.chat.id)
|
||||
await message.answer('Чат успешно зарегистрирован!')
|
||||
|
||||
|
||||
bot = Bot(
|
||||
token=config.Telegram.token,
|
||||
default=DefaultBotProperties(
|
||||
parse_mode=ParseMode.HTML,
|
||||
),
|
||||
)
|
||||
|
||||
scheduler = AsyncIOScheduler()
|
||||
|
||||
|
||||
async def send_mood_poll() -> Poll:
|
||||
await bot.send_poll(
|
||||
chat_id=-1002246469549,
|
||||
question='Оцените свое состояние на текущую минуту',
|
||||
options=[
|
||||
InputPollOption(
|
||||
text='😄',
|
||||
),
|
||||
InputPollOption(
|
||||
text='🤪',
|
||||
),
|
||||
InputPollOption(
|
||||
text='🫠',
|
||||
),
|
||||
InputPollOption(
|
||||
text='☠️',
|
||||
),
|
||||
InputPollOption(
|
||||
text='🤡',
|
||||
),
|
||||
InputPollOption(
|
||||
text='😟',
|
||||
),
|
||||
InputPollOption(
|
||||
text='😩',
|
||||
),
|
||||
InputPollOption(
|
||||
text='😡',
|
||||
),
|
||||
],
|
||||
is_anonymous=False,
|
||||
allows_multiple_answers=False,
|
||||
is_closed=False,
|
||||
disable_notification=True,
|
||||
)
|
||||
|
||||
|
||||
async def send_dinner_poll() -> Poll:
|
||||
message = await bot.send_poll(
|
||||
chat_id=-1002246469549,
|
||||
question='Какие у вас планы на обед?',
|
||||
options=[
|
||||
InputPollOption(
|
||||
text='🍽️ Пойду в общепит',
|
||||
),
|
||||
InputPollOption(
|
||||
text='📦 Хочу заказать в офис',
|
||||
),
|
||||
InputPollOption(
|
||||
text='🥪 Всё своё ношу с собой',
|
||||
),
|
||||
InputPollOption(
|
||||
text='😴 Хочу спать',
|
||||
),
|
||||
],
|
||||
is_anonymous=False,
|
||||
allows_multiple_answers=False,
|
||||
is_closed=False,
|
||||
disable_notification=True,
|
||||
)
|
||||
return message.poll
|
||||
|
||||
|
||||
async def send_dinner_delivery_poll() -> Poll:
|
||||
await bot.send_poll(
|
||||
chat_id=-1002246469549,
|
||||
question='Где будем заказывать?',
|
||||
options=[
|
||||
InputPollOption(
|
||||
text='Dark Side',
|
||||
),
|
||||
InputPollOption(
|
||||
text='Самокат',
|
||||
),
|
||||
InputPollOption(
|
||||
text='...',
|
||||
),
|
||||
InputPollOption(
|
||||
text='...',
|
||||
),
|
||||
],
|
||||
is_anonymous=False,
|
||||
allows_multiple_answers=False,
|
||||
is_closed=False,
|
||||
disable_notification=True,
|
||||
)
|
||||
|
||||
|
||||
async def on_startup(
|
||||
dispatcher: Dispatcher,
|
||||
):
|
||||
scheduler.add_job(
|
||||
func=send_mood_poll,
|
||||
trigger='cron',
|
||||
day_of_week='mon-fri',
|
||||
hour=17,
|
||||
minute=14,
|
||||
)
|
||||
scheduler.add_job(
|
||||
func=send_dinner_poll,
|
||||
trigger='cron',
|
||||
day_of_week='mon-fri',
|
||||
hour=17,
|
||||
minute=17,
|
||||
)
|
||||
scheduler.start()
|
||||
|
||||
|
||||
dp.startup.register(on_startup)
|
1
config/__init__.py
Обычный файл
1
config/__init__.py
Обычный файл
@ -0,0 +1 @@
|
||||
from .main import Telegram
|
19
config/main.py
Обычный файл
19
config/main.py
Обычный файл
@ -0,0 +1,19 @@
|
||||
from configparser import RawConfigParser
|
||||
import os
|
||||
|
||||
|
||||
cwd = os.getcwd()
|
||||
config = RawConfigParser()
|
||||
config.read(
|
||||
filenames=os.path.join(
|
||||
cwd,
|
||||
'config.ini',
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
class Telegram:
|
||||
token = config.get(
|
||||
section='Telegram',
|
||||
option='token',
|
||||
)
|
9
database.sql
Обычный файл
9
database.sql
Обычный файл
@ -0,0 +1,9 @@
|
||||
create table polls (
|
||||
id bigint not null,
|
||||
date date not null,
|
||||
is_complete boolean default false not null,
|
||||
primary key (id)
|
||||
);
|
||||
|
||||
create table mood_polls () inherits (polls);
|
||||
create table dinner_polls () inherits (polls);
|
7
main.py
Обычный файл
7
main.py
Обычный файл
@ -0,0 +1,7 @@
|
||||
import asyncio
|
||||
|
||||
from bot import bot, dp
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(dp.run_polling(bot))
|
3
requirements.txt
Обычный файл
3
requirements.txt
Обычный файл
@ -0,0 +1,3 @@
|
||||
aiogram
|
||||
APScheduler
|
||||
psycopg[binary]
|
Загрузка…
Ссылка в новой задаче
Block a user