from aiogram.dispatcher.filters import Command from keyboards.inline import button from loader import dp, db from loader import get_sheet_values @dp.message_handler(Command('next')) @dp.throttled(rate=2) async def get_message(message): value = db.select_user(user_id=message.from_user.id) count, start, end = value[1], value[2], value[3] text = get_sheet_values(f'C{start}:D{end}') await message.answer(text=text, reply_markup=button) db.update_value_for_next_command(start_point=start + count, end_point=end + count, user_id=message.from_user.id)
from aiogram import types from aiogram.dispatcher.filters import Command from aiogram.types import CallbackQuery from keyboards.inline import service from keyboards.inline.callback_datas import service_callback from keyboards.default import start_menu from loader import dp @dp.message_handler(Command('help')) async def show_services(message: types.Message): await message.answer( text=f'{message.from_user.username}, select a service', reply_markup=service) @dp.callback_query_handler(service_callback.filter(service_name='one')) async def callback_one(callback: CallbackQuery): await callback.answer(text='sen tan da din one') # ---------------Main menu button-------------- @dp.callback_query_handler(service_callback.filter(service_name='menu')) async def main_menu(call: CallbackQuery): await call.message.answer( f'Главное меню \n\n' f'/help - 🆘 Services \n'
from aiogram.dispatcher.filters import Command, Text from aiogram.types import Message, ReplyKeyboardRemove from keyboards.default import menu from loader import dp @dp.message_handler(Command("menu")) async def show_menu(message: Message): await message.answer("Choose category from menu above:", reply_markup=menu) @dp.message_handler(Text(equals=["CPU's", "GPU's", "SSD's"])) async def get_category(message: Message): await message.answer(f"You choose {message.text}. Thanks", reply_markup=ReplyKeyboardRemove())
from aiogram import types from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from loader import dp from states.test import Test @dp.message_handler(Command('test'), state=None) async def enter_test(message: types.Message): await message.answer("Вы начали тестирование.\n" "Вопрос №1. \n\n" "Вы уверены, что вам нужен telegram-bot?") await Test.Q1.set() @dp.message_handler(state=Test.Q1) async def answer_q1(message: types.Message, state: FSMContext): answer = message.text async with state.proxy() as data: data["answer1"] = answer await message.answer("Вопрос №2. \n" "А вы уже составили ТЗ для вашего telegram-bot'а?") await Test.next() @dp.message_handler(state=Test.Q2)
from database.database import DBCommands from preload.load_all import dp from aiogram.types import Message from aiogram.dispatcher.filters import Command from users.admin import Admin db = DBCommands() denis = Admin() @dp.message_handler(Command('add_teacher')) async def add_teacher(message: Message): teacher_id = int(message.text) await denis.add_teacher(teacher_id=teacher_id) await message.answer(f'Преподователь ') @dp.message_handler(Command('delete_teacher')) async def delete_teacher(message: Message): teacher_id = int(message.text) await denis.delete_teacher(teacher_id=teacher_id) await message.answer(f'Преподователь ')
if not match: continue time_dict[i] = int(match[0].replace(i[0], "")) result = datetime.timestamp( timedelta(seconds=time_dict["seconds"], minutes=time_dict["minutes"], hours=time_dict["hours"], days=time_dict["days"], weeks=time_dict["weeks"]) + datetime.now()) reason = re.findall(r"\w+$", text) reason = escape_md(reason[0]) if reason else "не указана" return result, reason @dp.message_handler(IsAdmin(), Command("unmute"), chat_type=ChatType.SUPERGROUP) async def cmd_mute(message: types.Message): reply = message.reply_to_message if not reply: return await message.reply("ну и кого мне размутить?") if reply.from_user.id in [ i.user.id for i in await bot.get_chat_administrators(message.chat.id) ]: return await message.reply("отказ.") try: status = (await bot.get_chat_member(message.chat.id, reply.from_user.id)).status except Exception as e: return await message.reply(e)
from main import bot, ourDispatcher from aiogram.types import Message, ReplyKeyboardRemove from config import adminID from aiogram.dispatcher.filters import Command, Text from keyboard.default import menu async def startupMessage(ourDispatcher): await bot.send_message( chat_id=adminID, text="АХТУНГ! \n Бот перезапущён - небольшие технические шОкОлАдКи XD " ) @ourDispatcher.message_handler(Command("start")) async def echo(message: Message): text = f"Приветики, я бот, у которого ты можешь узнать свое расписание.\n Я думаю это намного удобней, чем каждый раз заглядывать в дневник. \n Уверен, мы сработаемся с тобой :) \n Напиши комманду /menu что бы перейти к выбору дня." await message.answer(text=text) @ourDispatcher.message_handler(Command("menu")) async def showMenu(message: Message): await message.answer("Выбери из меню ниже: ", reply_markup=menu) @ourDispatcher.message_handler(Text(equals=["Понедельник"])) async def getMonday(message: Message): await message.answer("8:30 - 9:15\n" "1. *отдых :з*\n" "10 минут - перемена\n" "9:25 - 10:10\n"
import logging from aiogram.dispatcher.filters import Command from aiogram.types import Message, CallbackQuery from keyboards.inline.choice_buttons import choice, b_ochnaya_keyboard, contact_keyboard, up_contact_keyboard, \ magistratura_keyboard, m_budget_keyboard, m_pay_keyboard, mb_directions_keyboard, mb_documents_keyboard, \ mb_stages_keyboard, mbs_enrollment_keyboard, mp_directions_keyboard, mp_documents_keyboard, mp_stages_keyboard from loader import dp @dp.message_handler(Command("start")) async def show_courses(message: Message): await message.answer( text= "Добрый день! Я бот-помощник абитуриента. Нажмите /course для выбора меню!" ) @dp.message_handler(Command("course")) async def show_courses(message: Message): await message.answer(text="Выберите направление:", reply_markup=choice) @dp.callback_query_handler(text_contains='bakalavr') async def go_in_bakalavr(call: CallbackQuery): await call.answer(cache_time=10) callback_data = call.data logging.info(f'call = {callback_data}') await call.message.answer(
from lo import bot, dp from aiogram import types from aiogram.dispatcher.filters import Command from aiogram.types import ReplyKeyboardMarkup, ReplyKeyboardRemove, InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton from string import Template from aiogram.dispatcher import FSMContext class TEST(StatesGroup): Q1 = State() # name of the person who ordered Q2 = State() # tele_number Q3 = State() # address Q4 = State() # payment of system @dp.message_handler(Command('order_ps'), state=None) async def start_order_kz(message: types.Message): await message.answer("Есіміңіз?") await TEST.Q1.set() @dp.message_handler(state=TEST.Q1) async def qu1(message: types.Message, state=FSMContext): answer = message.text global ans1 ans1 = answer await state.update_data(answer1=answer) await message.answer("Телефон номеріңіз📱") await TEST.next()
import time import asyncio from aiogram import types, exceptions from aiogram.dispatcher.filters import Command from aiogram.utils.markdown import hlink from filters import IsGroup, IsReplyFilter from loguru import logger from loader import dp, db report_command = Command("report", prefixes={"/", "!"}) @dp.message_handler(IsGroup(), IsReplyFilter(True), report_command) async def report_user(message: types.Message): """Отправляет жалобу на пользователя админам""" reply = message.reply_to_message # Если юзер репортит на сообщение из канала, то пропускаем это if reply.is_automatic_forward is True: await message.delete() return # Проверка на то что реплай сообщение написано от имени канала if reply.sender_chat: mention = reply.sender_chat.title else: mention = reply.from_user.get_mention() chat_id = message.chat.id
@dp.message_handler(text=["🔙 Back", "🔙 Назад", "🔙 Ortga"], state=[Menu.Category, Menu.About, Feedback, Menu.Settings]) async def go_back(message: Message): await show_menu(message) @dp.message_handler(text=["🔙 Back", "🔙 Назад", "🔙 Ortga"], state=[ Settings.InputtingPhone, Settings.InputtingName, Settings.ChangeLanguage ]) async def go_back(message: Message): await show_settings(message) @dp.message_handler(Command("menu"), state="*") async def show_menu(message: Union[Message, CallbackQuery]): user = await db.get_user(message.from_user.id) print("lang=", user.language) if isinstance(message, Message): await message.answer(_("Main Menu"), reply_markup=get_main_menu_keyboard( user.language)) elif isinstance(message, CallbackQuery): await message.message.answer(_("Main Menu"), reply_markup=get_main_menu_keyboard( user.language)) await Menu.Main_Menu.set()
return False data['answers'].update( {message.message_id: { 'answer': answer, 'i': i, 'j': j }}) await state.update_data(data) return True @dp.message_handler(Command('contact'), state=None) async def contact(message: Message, state: FSMContext): await fill_data('contact', message, state) @dp.message_handler(Command('polls'), state=None) async def show_polls(message: Message): await message.answer('Выберите опрос', reply_markup=create_polls('take')) @dp.callback_query_handler(poll_callback.filter(gr='take'), state=None) async def choose_poll(call: CallbackQuery, callback_data: dict, state: FSMContext): await call.answer(cache_time=60) await fill_data(callback_data.get('nm'), call.message, state)
from handlers.users.Finally_Quiz.quizing_medium.quiz_medium_photo import med_photo_quiz from handlers.users.get_my_rating import get_my_rating from keyboards.inline.callback_datas import quiz_callback from keyboards.inline.medium_keyboard import med_photo_keyboard1, medium_keyboard1, medium_keyboard2, medium_keyboard3, \ medium_keyboard4, medium_keyboard5, medium_keyboard6, \ medium_keyboard7, medium_keyboard8, medium_keyboard9, medium_keyboard10, medium_keyboard11, medium_keyboard12, \ medium_keyboard13, CorrectAnswersMediumQuiz from keyboards.inline.quiz_keyboard import YesOrNoFinishKeyboard from quiz_all_files.Quiz_Questions.questions_quiz import Medium_Array_Questions from loader import dp, photo_db, db from aiogram import types from states.MachineStates_For_Quiz import QuizMedium, YesOrNoFinishShowRating @dp.message_handler(Command("quiz_medium"), state=None) async def enter_easy_test(message: types.Message): # присылаем фотку и клаву await message.answer_photo(photo=open(photo_db.get_one_file_name(name=med_photo_quiz[0]), 'rb'), reply_markup=med_photo_keyboard1) await message.answer(text="<b>Вопрос 1:</b>\n" + Medium_Array_Questions[0], reply_markup=medium_keyboard1) await QuizMedium.Q1.set() @dp.callback_query_handler(quiz_callback.filter(next="2m"), state=QuizMedium.Q1) async def question_1(call: CallbackQuery, state: FSMContext, callback_data: dict): await call.answer(cache_time=60) answer1 = callback_data.get('answer') await state.update_data(answer1=answer1) await call.message.edit_text(text="<b>Вопрос 2:</b>\n" + Medium_Array_Questions[1], reply_markup=medium_keyboard2) await QuizMedium.Q2.set()
from keyboards.default import start_keyboard from loader import dp, cursor, connect from aiogram.dispatcher.filters import Command from aiogram.types import Message @dp.message_handler(Command("start")) # Хендлер для команды старт async def start_command(message: Message): hello_text = "Привет меня зовут Кира, я помогу вам заказать доставку из ресторана Milna, прямо к вашей двери ;)" user_id = message.from_user.id full_name = message.from_user.full_name cursor.execute(f"""SELECT id FROM user_data WHERE id={user_id}""" ) # выбрать столбец id в таблице user_data, где id=user_id if cursor.fetchone( ) is None: # если фунция не находит id пользователя в БД, создаем запись cursor.execute( f"""INSERT INTO user_data VALUES ({user_id},'{full_name}',NULL, NULL, NULL)""" ) connect.commit() await message.answer(text=hello_text, reply_markup=start_keyboard) print("New user registered") else: await message.answer(text="С возвращением!", reply_markup=start_keyboard) print("An old user has returned to us") @dp.message_handler(Command("info")) # Хендлер для команды хелп async def start_menu(message: Message):
from aiogram import types from aiogram.dispatcher.filters import Command from data.convert import sticker from data.messages import hello_message, donuts from keyboards.default import menu from keyboards.inline import search_kb from keyboards.inline.inline_buttons import search_teacher from loader import dp from states import States @dp.message_handler(Command('reset')) async def do_reset(message: types.Message): await States.GROUP.set() await message.answer('Найди свою группу:', reply_markup=search_kb) @dp.message_handler(Command('prepods')) async def get_prepods_command(message: types.Message): await message.answer( 'Нажмите на кнопку ниже, чтобы посмотреть рейтинг, либо просто отправьте боту фамилию.', reply_markup=search_teacher) @dp.message_handler(Command('calls')) async def get_sticker(message: types.Message): await message.answer_sticker(sticker=sticker) @dp.message_handler(Command('search'))
import logging from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.types import Message, CallbackQuery import keyboards from data import config from keyboards.inline.add_phrase_menu import add_phrase_menu_callback from loader import dp, db @dp.message_handler(Command("add_phrase"), user_id=config.ADMINS) async def ask_add_phrase(msg: Message): user = msg.from_user phrase = msg.get_args() if len(phrase) == 0 or len(phrase) > 150: await msg.answer("Что-то не то с длинной твоей фразы, дорогой админ 🥴") return await msg.answer(phrase, reply_markup=keyboards.inline.add_phrase_menu) await msg.delete() logging.info(f"Admin-{user.username} want to add phrase -> {phrase}") @dp.callback_query_handler(add_phrase_menu_callback.filter(action="add")) async def add_phrase(call: CallbackQuery, state: FSMContext, callback_data: dict): user = call.from_user
from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.dispatcher.filters.state import StatesGroup, State from aiogram.types import CallbackQuery from telegram_bot_pagination import InlineKeyboardPaginator from loader import dp data = ["Q", "A", "Z", "W", "S", "X", "E", "D", "C", "R", "F", "V"] class TestState(StatesGroup): TestState = State() @dp.message_handler(Command("test")) async def test(message: types.Message, state: FSMContext): paginator = InlineKeyboardPaginator(len(data), current_page=0, data_pattern='page#{page}') # await TestState.TestState.set() await state.update_data(test_state="Test_State") await message.answer(data[0], reply_markup=paginator.markup) @dp.callback_query_handler(regexp='page\#\d') async def callback_test(call: CallbackQuery, state: FSMContext): print(f'-> {call.data}') page = call.data.split('#')[1] print(f'page={str(page)}')
from aiogram import types from aiogram.dispatcher.filters import Command from aiogram.types import ReplyKeyboardRemove from aiogram.utils.exceptions import BadRequest from filters import IsGroup from loader import dp from loguru import logger @dp.message_handler(IsGroup(), Command(commands=["banmepls"], prefixes="/")) async def ban_me(message: types.Message): member_id = message.from_user.id member_fullname = message.from_user.full_name try: await message.chat.kick(user_id=member_id, until_date=datetime.timedelta(minutes=60)) logger.info(f"Пользователь {member_fullname} был забанен!") await message.answer( f'Пользовтаель {member_fullname} был забанен по собественному желанию!' ) except BadRequest:
from aiogram.dispatcher.filters import Command from aiogram.dispatcher import FSMContext from data.config import admins from loader import dp, db, bot from aiogram import types from states import Send @dp.message_handler(Command('GetUsers')) async def admin_message(message: types.Message): if message.from_user.id in admins: users = db.select_all() users1 = '' for i in users: print(i[0], i[1], i[2]) users1 += str([i[0], i[1], i[2]]) + '\n' await message.answer(users1) @dp.message_handler(Command('sendmessage')) async def sending(message: types.Message): if message.from_user.id in admins: await message.answer('Отправьте id пользователя') await Send.Sends.set() @dp.message_handler(state=Send.Sends) async def sending(message: types.Message, state: FSMContext):
def setup(dp: Dispatcher, *args, **kwargs): logging.info('Initialize admin module') dp.register_message_handler(cmd_uptime, Command('uptime', prefixes='#'))
from aiogram import types from aiogram.dispatcher.filters import Command from aiogram.types import ReplyKeyboardRemove from keyboards.default import locations_buttons from loader import dp @dp.message_handler(Command("show_on_map")) async def show_on_map(message: types.Message): await message.answer( f"Хай, {message.from_user.full_name}! \n" f"Узнать координаты", reply_markup=locations_buttons.keyboard) @dp.message_handler(content_types=types.ContentTypes.LOCATION) async def get_location(message: types.Message): location = message.location latitude = location.latitude longitude = location.longitude await message.answer(f"latitude = {latitude}" f"longitude = {longitude}", disable_web_page_preview=True, reply_markup=ReplyKeyboardRemove()) await message.answer_location(latitude=latitude, longitude=longitude)
from aiogram import types from aiogram.dispatcher.filters import Command from loader import dp @dp.message_handler(Command('getid')) async def get_id(message: types.Message): await message.answer("Mой ID: {}".format(message.from_user.id))
from aiogram.dispatcher.filters import Command, Text from aiogram.types import Message, ReplyKeyboardRemove from keyboards.default import menu from loader import dp, bot from bs4 import BeautifulSoup import requests as req from config import admin_id @dp.message_handler(Command("start")) async def show_menu(message: Message): await message.answer( "Привет! Я гид Геленджика, выбери то что тебя интересует", reply_markup=menu) await bot.send_message(chat_id=admin_id, text="Бота запустили") @dp.message_handler( Text(equals=["Погода", "Web камеры", "Еда", "Куда сходить?"])) async def get_food(message: Message): chat_id = message.from_user.id if message.text == 'Погода': weatherUrl = req.get("https://www.glavmore.ru/") weather = 'Сегодня в Геленджике ' + get_weather(weatherUrl) await bot.send_message(chat_id=chat_id, text=weather) if message.text == 'Web камеры': cam1 = req.get("https://www.glavmore.ru/webcam/gelendzhik-center.html") webCamImg1 = get_cam_img(cam1) text = 'Полюбуйся красивым видом:'
from aiogram import types from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.types import CallbackQuery from emoji import emojize from keyboards.inline.metabolism import (activity_callback, gender_callback, metabolism_activity_markup, metabolism_gender_markup) from loader import dp from states.metabolism import Metabolism from utils.misc import metabolism_calculation, rate_limit @rate_limit(60, "metabolism") @dp.message_handler(Command("metabolism", prefixes="!/"), state=None) async def enter_test(message: types.Message): await message.answer( "Вы начали расчет своего уровня обмена веществ.\n" "Ваш пол?", reply_markup=metabolism_gender_markup, ) await Metabolism.gender.set() @dp.message_handler(state=Metabolism.gender) @dp.callback_query_handler(gender_callback.filter()) async def answer_gender(call: CallbackQuery, callback_data: dict, state: FSMContext): await call.message.edit_reply_markup(reply_markup=None)
from aiogram.dispatcher import FSMContext from loader import dp from aiogram import types from aiogram.dispatcher.filters import Command from states import SetName @dp.message_handler(Command('setname')) async def set_user_name(message: types.Message): await message.answer(text='How can I call you? \n' 'You can answer: \n') await SetName.get_nick_name.set() @dp.message_handler(state=SetName.get_nick_name) async def answer_1(message: types.Message, state: FSMContext): answer = message.text async with state.proxy() as save_data: save_data['answer1'] = answer await message.answer(text=f'your nick is {save_data["answer1"]}') await state.reset_state(with_data=False)
from aiogram.dispatcher.filters import Command from aiogram.types import CallbackQuery, Message from keyboards.default.start_text_button import parse_keyboard from keyboards.inline.inline_callback import data_pick_callback from keyboards.inline.parse import data_pick_keyboard from loader import dp from scraping_data import main @dp.message_handler(Command('start')) async def start_command(message:Message): await message.answer(text='Привет, чтобы узнать расписание нажми на кнопку ниже и затем выбери дату', reply_markup = parse_keyboard) @dp.callback_query_handler(data_pick_callback.filter(action='refresh_data')) async def refresh_data(call: CallbackQuery): await call.answer() await call.answer(text='Теперь выбери дату') await call.message.edit_reply_markup(reply_markup=data_pick_keyboard()) @dp.message_handler(text='Начать') async def start_data_query(message: Message): await message.answer(text='Теперь выбери дату', reply_markup=data_pick_keyboard()) @dp.callback_query_handler(data_pick_callback.filter(action='data_pick')) async def data_query(call: CallbackQuery, callback_data: dict): data_time = callback_data['def_data'] answer = await main.main(data_time) await call.answer() await call.message.answer(text=f'Расписание за {data_time}:\n{answer}')#text=f'{answer}'
import requests from aiogram.dispatcher.filters import Command from aiogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery from bs4 import BeautifulSoup from ConfigBot import admin_id from main import bot, dp import feedparser async def send_to_admin(dp): await bot.send_message(chat_id=admin_id, text="Для выбора категории новостей введите /new") @dp.message_handler(Command("News")) async def show_menu(message: Message): #По ссылке парсим все URL_YANDEX_NEWS = 'https://yandex.ru/news/export' r = requests.get(URL_YANDEX_NEWS) soup = BeautifulSoup(r.text, 'html.parser') #словарь будет хранить все URL(value) + text(key) allHref = {} #выбираем только ссылки for link in soup.find_all("a"): allHref[link.string] = link.get("href") #Из всех выбираем только те что для избранной рубрики #категории указаны в файле RubricText.txt favoriteСategories = [] with open('RubricText.txt', 'r', encoding="utf-8") as f: favoriteСategories = f.read().splitlines()
def register(dp: Dispatcher, session: orm.Session) -> None: dp.register_message_handler(functools.partial(tag_all, session), Command(["all"]) | Regexp(r"\B@all\b"), is_user=True, is_group_or_supergroup=True)
from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Command from aiogram.types import CallbackQuery from app.filters.IsAdmin import IsAdminFilter from app.keyboards.inline.cancel_keyboard import set_cancel_keyboard from app.keyboards.inline.subjects_customization_keyboards.edit_subject_keyboard import edit_subject_keyboard from app.keyboards.inline.subjects_customization_keyboards.show_subjects_for_subjects_edit import \ set_subjects_list_keyboard from app.loader import dp, bot from app.utils.db_api.quick_commands.quick_commands_subjects import add_subject, delete_subject, \ select_subject, select_all_subjects from app.utils.db_api.quick_commands.quick_commands_zoom import add_link @dp.message_handler(Command("subject"), IsAdminFilter()) async def show_subjects_customization_menu( message: Union[types.Message, types.CallbackQuery]): subjects = await select_all_subjects() if isinstance(message, types.Message): await message.answer("Меню действий с предметами", reply_markup=set_subjects_list_keyboard(subjects)) elif isinstance(message, types.CallbackQuery): call = message await call.answer() await call.message.edit_text( text="Меню действий с предметами", reply_markup=set_subjects_list_keyboard(subjects)) @dp.callback_query_handler(text_contains="add_new_subject")
from aiogram.dispatcher.filters import Command from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import StatesGroup, State from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.contrib.middlewares.logging import LoggingMiddleware dp = Dispatcher(bot, storage=MemoryStorage()) dp.middleware.setup(LoggingMiddleware()) class User_info(StatesGroup): i1 = State() i2 = State() @dp.message_handler(Command('start')) async def send_welcome(message: types.Message): await message.answer( text="Привіт\n" "Я бот статистики по Dota 2\n" "Допоможу тобі бути в курсі всіх останніх подій в чемпіонатах та слідкувати за улюбленними командам, обери необхідний пунк з меню\n\n" "Якщо ти ще не заповнив інформацію про себе – /info") @dp.message_handler(Command('info'), state=None) async def get_info(message: types.Message): await message.answer("Введи, будь ласка, steam url") await User_info.i1.set() @dp.message_handler(state=User_info.i1)