first commit
This commit is contained in:
0
bot.0.1/handlers/__init___.py
Executable file
0
bot.0.1/handlers/__init___.py
Executable file
97
bot.0.1/handlers/admin.py
Executable file
97
bot.0.1/handlers/admin.py
Executable file
@@ -0,0 +1,97 @@
|
||||
from aiogram.dispatcher import FSMContext
|
||||
from aiogram.dispatcher.filters.state import State, StatesGroup
|
||||
from aiogram.dispatcher.filters import Text
|
||||
from aiogram import types, Dispatcher
|
||||
from create_bot import bot
|
||||
from data_base import sqlite_db
|
||||
from keybords import button_case_admin
|
||||
|
||||
ID = None
|
||||
|
||||
|
||||
class FSMAdmin(StatesGroup):
|
||||
photo = State()
|
||||
name = State()
|
||||
description = State()
|
||||
price = State()
|
||||
|
||||
|
||||
# Получаем ID текущего модератора
|
||||
async def make_changes_command(message: types.Message):
|
||||
global ID
|
||||
ID = message.from_user.id
|
||||
await bot.send_message(message.from_user.id, f"Что нужно хозяин {message.from_user.first_name} ???", reply_markup=button_case_admin)
|
||||
await message.delete()
|
||||
|
||||
|
||||
# - Начало диалога загрузки нового пункта меню
|
||||
async def cm_start(message: types.Message):
|
||||
if message.from_user.id == ID:
|
||||
await FSMAdmin.photo.set()
|
||||
await message.reply("Загрузи фото")
|
||||
|
||||
|
||||
# Выход из состояний
|
||||
async def cancel_handler(message: types.Message, state: FSMContext):
|
||||
if message.from_user.id == ID:
|
||||
current_state = await state.get_state()
|
||||
if current_state is None:
|
||||
return
|
||||
await state.finish()
|
||||
await message.reply("ОК")
|
||||
|
||||
|
||||
# - Ловим первый ответ
|
||||
async def load_photo(message: types.Message, state: FSMContext):
|
||||
if message.from_user.id == ID:
|
||||
async with state.proxy() as data:
|
||||
data["photo"] = message.photo[0].file_id
|
||||
await FSMAdmin.next()
|
||||
await message.answer("Введи название")
|
||||
|
||||
|
||||
# - Ловим Второй ответ
|
||||
async def load_name(message: types.Message, state: FSMContext):
|
||||
if message.from_user.id == ID:
|
||||
async with state.proxy() as data:
|
||||
data["name"] = message.text
|
||||
await FSMAdmin.next()
|
||||
await message.answer("Введити описание")
|
||||
|
||||
|
||||
# - Ловим третий ответ
|
||||
async def load_description(message: types.Message, state: FSMContext):
|
||||
if message.from_user.id == ID:
|
||||
async with state.proxy() as data:
|
||||
data["description"] = message.text
|
||||
await FSMAdmin.next()
|
||||
await message.answer("Укажи цену")
|
||||
|
||||
|
||||
# - Ловим последний ответ
|
||||
async def load_price(message: types.Message, state: FSMContext):
|
||||
if message.from_user.id == ID:
|
||||
state.proxy()
|
||||
try:
|
||||
float(message.text)
|
||||
except:
|
||||
await FSMAdmin.price.set()
|
||||
await message.reply("Ценa указана не верно")
|
||||
await message.answer("Укажи цену ещё раз")
|
||||
async with state.proxy() as data:
|
||||
data["price"] = float(message.text)
|
||||
|
||||
await sqlite_db.sql_add_command(state)
|
||||
# await message.answer(str(data))
|
||||
await state.finish()
|
||||
|
||||
|
||||
def register_handlers_client(dp: Dispatcher):
|
||||
dp.register_message_handler(cm_start, commands=["Загрузить"], state=None)
|
||||
dp.register_message_handler(cancel_handler, commands=["отмена"], state="*")
|
||||
dp.register_message_handler(cancel_handler, Text(equals="отмена", ignore_case=True), state="*")
|
||||
dp.register_message_handler(load_photo, content_types=["photo"], state=FSMAdmin.photo)
|
||||
dp.register_message_handler(load_name, state=FSMAdmin.name)
|
||||
dp.register_message_handler(load_description, state=FSMAdmin.description)
|
||||
dp.register_message_handler(load_price, state=FSMAdmin.price)
|
||||
dp.register_message_handler(make_changes_command, commands=["moderator"], is_chat_admin=True)
|
||||
139
bot.0.1/handlers/client.py
Executable file
139
bot.0.1/handlers/client.py
Executable file
@@ -0,0 +1,139 @@
|
||||
from aiogram.dispatcher.filters.state import State, StatesGroup
|
||||
from aiogram.dispatcher import FSMContext
|
||||
from aiogram.dispatcher.filters import Text
|
||||
from aiogram import types, Dispatcher
|
||||
from config import open_weather_API_token
|
||||
from keybords import custom_kb_client
|
||||
from data_base import sqlite_db
|
||||
import other_packages
|
||||
from create_bot import bot
|
||||
from asyncio import sleep
|
||||
import datetime
|
||||
import requests
|
||||
import string
|
||||
import json
|
||||
|
||||
|
||||
class FSMWeather(StatesGroup):
|
||||
place = State()
|
||||
|
||||
|
||||
async def cmd_start(message: types.Message):
|
||||
await message.reply("Hi!\nI'm Bot!\nPowered by aiogram.", reply_markup=custom_kb_client)
|
||||
|
||||
|
||||
async def get_coin(message: types.Message):
|
||||
await message.reply(f"{other_packages.print_bitcoin()}\U0001F911")
|
||||
|
||||
|
||||
async def get_weather(message: types.Message):
|
||||
await FSMWeather.place.set()
|
||||
await message.answer("Введите город")
|
||||
|
||||
|
||||
async def cancel_handler(message: types.Message, state: FSMContext):
|
||||
current_state = await state.get_state()
|
||||
if current_state is None:
|
||||
return
|
||||
await state.finish()
|
||||
await message.reply("ОК")
|
||||
|
||||
|
||||
async def place(message: types.Message, state: FSMContext):
|
||||
state.proxy()
|
||||
flag = 1
|
||||
|
||||
code_to_smile = {
|
||||
"Clear": "Ясно \U00002600",
|
||||
"Clouds": "Облачно \U00002601",
|
||||
"Rain": "Дождь \U00002614",
|
||||
"Drizzle": "Дождь \U00002614",
|
||||
"Thunderstorm": "Гроза \U000026A1",
|
||||
"Snow": "Снег \U0001F328",
|
||||
"Mist": "Туман \U0001F32B"
|
||||
}
|
||||
|
||||
while flag == 1:
|
||||
try:
|
||||
r = requests.get(
|
||||
f"https://api.openweathermap.org/data/2.5/weather?q={message.text}&appid={open_weather_API_token}&units=metric"
|
||||
)
|
||||
|
||||
data = r.json()
|
||||
|
||||
city = data["name"]
|
||||
current_weather = data["main"]["temp"]
|
||||
|
||||
weather_description = data["weather"][0]["main"]
|
||||
if weather_description in code_to_smile:
|
||||
wd = code_to_smile[weather_description]
|
||||
else:
|
||||
wd = "Я понятия не имею, что у тебя там творится, выгялни в окно и посмотри!"
|
||||
|
||||
humidity = data["main"]["humidity"]
|
||||
pressure = data["main"]["pressure"]
|
||||
wind = data["wind"]["speed"]
|
||||
sunrise_timestamp = datetime.datetime.fromtimestamp(data["sys"]["sunrise"])
|
||||
sunset_timestamp = datetime.datetime.fromtimestamp(data["sys"]["sunset"])
|
||||
length_of_the_day = sunset_timestamp - sunrise_timestamp
|
||||
await message.answer(f"***{datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}***\n"
|
||||
f"Погода в городе: {city}\nТемпература: {current_weather}C° {wd}\n"
|
||||
f"Влажность: {humidity}%\nДавление: {pressure} мм.рт.ст\n"
|
||||
f"Ветер: {wind} м/c\nВосход солнца: {sunrise_timestamp}\n"
|
||||
f"Закат солнца: {sunset_timestamp}\nПродолжительность дня: {length_of_the_day}\n"
|
||||
f"***\U0001F389Хорошего дня!\U0001F60B***")
|
||||
|
||||
except:
|
||||
await message.reply("Проверьте название города\U0001F914")
|
||||
break
|
||||
flag = 0
|
||||
await state.finish()
|
||||
|
||||
|
||||
async def pizza_menu_command(message: types.Message):
|
||||
await sqlite_db.sql_reade(message)
|
||||
|
||||
|
||||
async def play_dice(message: types.Message):
|
||||
await bot.send_message(message.from_user.id, f"Привет\U0001F44B {message.from_user.username}! Начинаем игру!!!\U0001F3B2")
|
||||
await sleep(0.5)
|
||||
await bot.send_message(message.from_user.id, "Я буду кидать первым\U0001F60B")
|
||||
await sleep(1)
|
||||
|
||||
bot_data = await bot.send_dice(message.from_user.id)
|
||||
bot_data = bot_data["dice"]["value"]
|
||||
await sleep(4)
|
||||
|
||||
user_data = await bot.send_dice(message.from_user.id)
|
||||
user_data = user_data["dice"]["value"]
|
||||
await sleep(4)
|
||||
|
||||
if bot_data > user_data:
|
||||
await bot.send_message(message.from_user.id, f"Вы проиграли\U0001F972")
|
||||
elif bot_data < user_data:
|
||||
await bot.send_message(message.from_user.id, "\U0001F389Вы победили!!!\U0001F3C6")
|
||||
else:
|
||||
await bot.send_message(message.from_user.id, "Ничья\U0001F609")
|
||||
|
||||
|
||||
# async def name_filter(message: types.Message):
|
||||
# if {i.lower().translate(str.maketrans("", "", string.punctuation)) for i in message.text.split(" ")} \
|
||||
# .intersection(set(json.load(open("name_dict.json")))):
|
||||
# await message.answer(f"Меня зовут Гена!!!")
|
||||
|
||||
|
||||
async def Said_filter(message: types.Message):
|
||||
await message.answer("Вы упоминали Саида, что он в этот раз учудил?")
|
||||
|
||||
|
||||
def register_handlers_client(dp: Dispatcher):
|
||||
dp.register_message_handler(cmd_start, commands=["start"])
|
||||
dp.register_message_handler(get_coin, commands=["bitcoin"])
|
||||
dp.register_message_handler(get_weather, commands=["погода", "weather"], state=None)
|
||||
dp.register_message_handler(cancel_handler, commands=["отмена"], state="*")
|
||||
dp.register_message_handler(cancel_handler, Text(equals="отмена", ignore_case=True), state="*")
|
||||
dp.register_message_handler(place, content_types=["text"], state=FSMWeather.place)
|
||||
dp.register_message_handler(pizza_menu_command, commands=["Меню"])
|
||||
dp.register_message_handler(play_dice, commands=["dice"])
|
||||
dp.register_message_handler(Said_filter, lambda message: "Саид" in message.text) # - интересная конструкция
|
||||
# dp.register_message_handler(name_filter)
|
||||
14
bot.0.1/handlers/other.py
Executable file
14
bot.0.1/handlers/other.py
Executable file
@@ -0,0 +1,14 @@
|
||||
from aiogram import types, Dispatcher
|
||||
import json
|
||||
import string
|
||||
|
||||
|
||||
async def reaction(message: types.Message):
|
||||
if {i.lower().translate(str.maketrans("", "", string.punctuation)) for i in message.text.split(" ")} \
|
||||
.intersection(set(json.load(open("censorship.json")))):
|
||||
await message.reply(f"\U0001F92CМаты запрещены!!!\U0001F621\U0001F621\U0001F621")
|
||||
await message.delete()
|
||||
|
||||
|
||||
def register_handlers_other(dp: Dispatcher):
|
||||
dp.register_message_handler(reaction)
|
||||
Reference in New Issue
Block a user