@alex22122
Unity, C#

Почему не отправляются сообщения по времени?

Пытаюсь сделать рассылку сообщений по времени - не получается.
Вот код:
async def hello_users():
    await bot.send_message(config.CHANNEL_ID, f'Доброе утро!\nЕсть планы на день?')

async def goodbye():
    await bot.send_message(config.CHANNEL_ID, f'Всем, кто ложится, спокойной ночи!')

async def main():
    aioschedule.every().day.at('14:25').do(hello_users)
    aioschedule.every().day.at('23:00').do(goodbye)

    while True:
        await aioschedule.run_pending()


Вот весь код:
print('Импорт библиотек')
import config
import logging
import filters
import time
import asyncio
import aioschedule
import requests
import HB

print('Достаем данные из библиотек')
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ContentType, Message

from filters import IsAdminFilter
from db import Database

from time import sleep

logging.basicConfig(level=logging.INFO)

print('Получаем токен бота')
bot = Bot(token=config.TOKEN)
print('Токен получен')
dp = Dispatcher(bot)
db = Database('GC.db')

dp.filters_factory.bind(IsAdminFilter)

#Приветствие нового пользователя в груповом чате
@dp.message_handler(content_types=[ContentType.NEW_CHAT_MEMBERS])
async def new_members_handler(message: Message):
    new_member = message.new_chat_members[0]
    await bot.send_message(message.chat.id, f'Еще один любитель IT - {new_member.mention}\nПоприветствуем его!\nОбязательно напиши о себе, если хочешь, чтобы люди знали с кем имеют дело и добавь хэштег "Знакомство" к своему сообщению, тогда люди смогут о тебе прочитать в любой момент!\nБудь дружелюбен и никого не оскорбляй, ведь мы - одна семья!‍‍‍\nP.S. На всякий случай напиши команду "/recommendations"')
    await message.delete()

#Рассылка утреннего сообщения
async def hello_users():
    await bot.send_message(config.CHANNEL_ID, f'Доброе утро!\nЕсть планы на день?')

async def goodbye():
    await bot.send_message(config.CHANNEL_ID, f'Всем, кто ложится, спокойной ночи!')

async def main():
    aioschedule.every().day.at('10:00').do(hello_users)
    aioschedule.every().day.at('23:00').do(goodbye)

    while True:
        await aioschedule.run_pending()

#Рекомендации для новозашедших
@dp.message_handler(commands=["recommendations"])
async def help (message: types.Message):
	await bot.send_message(message.chat.id, f'Привет!✌️ Вы часто сталкивались с ситуацией, когда никто не может вам что-либо порекомендовать? Я вот нет. Мне рекомендуют все и каждый) Почему бы мне не порекомендовать тебе нашего бота(@RoyaltyIT_bot)? Если ты хочешь, чтобы тебя вовремя уведомляли о всем интересном движении в нашей группе и канале, то советую подписаться на него(просто отправив ему в личные сообщения команду "/start"). Обещаю, что тебе не будут присылать ничего лишнего или спам, ведь мы работаем не для себя, а для людей! Жду обратной связи в боте и желаю хорошего времени суток!\nБот - @RoyaltyIT_bot')

#Записывает людей в базу данных
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    users = db.get_users()
    if message.chat.type == 'private':
        await bot.send_message(message.from_user.id, "Добро пожаловать!")
        if not db.user_exists(message.from_user.id):
            db.add_user(message.from_user.id)

#Отправляет всем сообщение от админа, например, /sendall Тестовое сообщение (Пользователи увидяь: "Тестовое сообщение")
@dp.message_handler(commands=['sendall'])
async def sendall(message: types.Message):
    if message.chat.type == 'private':
        if message.from_user.id == 1453743541 or 1773013107:
            text = message.text[9:]
            users = db.get_users()
            await bot.send_message(message.from_user.id, "Рассылка прошла успешно!")
            for row in users:
                try:
                    await bot.send_message(row[0], text)
                    if int(row[1]) != 1:
                        db.set_active(row[0], 1)
                except:
                    db.set_active(row[0], 1)
            await bot.send_message(message.from_user.id, 'Рассылка прошла успешно!')


#Узнаем кол-во людей, подписавшихся на рассылку.
@dp.message_handler(commands=['sub_users'])
async def sub_users(message: types.Message):
    if message.chat.type == 'private':
        if message.from_user.id == 1453743541 or 1773013107:
            text = message.text[9:]
            textt = message.text
            users = db.get_users()
            l = 0
            for row in users:
                l = l+1   
            await bot.send_message(message.from_user.id, "Людей, подписавшихся на рассылку: ")      
            await bot.send_message(message.from_user.id, l)

#Команда help
@dp.message_handler(commands=["help"])
async def help (message: types.Message):
	await bot.send_message(message.chat.id, f'Тебе понадобилась помощь? Если это действительно так, то позови админа! Как правило, они постоянно модерируют чат. ⚠️Так же ты можешь узнать своих собеседников получше написав хэштег "Знакомство" или поделиться имфорацией о себе, добавив тот же хештег.⚠️')

#Команда для вызова админов
@dp.message_handler(commands=["admins"])
async def admins (message: types.Message):
	admins = 1453743541
	await bot.send_message(message.chat.id, f"Админ идет на помощь!")
	for row in admins:
		await bot.send_message(message.text, "Кому-то в чате нужна помощь!")

#Активность в чате
@dp.message_handler()
async def echo_message(msg: types.Message):
    users = db.get_users()
    for row in users:
        db.set_active(row[0], +1)
        db.upd_score(row[0])

#Бан пользователей
@dp.message_handler(is_admin=True, commands=["ban"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
	if not message.reply_to_message:
		await message.reply("Эта команда должна быть ответом на сообщение!")
		return

	await bot.kick_chat_member(chat_id=config.GROUP_ID, user_id=message.reply_to_message.from_user.id)
	await message.reply_to_message.reply("Пользователь забанен!")

	await bot.send_message(message.from_user.id, "Вас забанили в телеграм группе Royalty | IT. Если вы не согласны с решением администрации, то вам следует написать ему - @bezrukovchay или ему - DangerouslyUnknownB0w1")

#Разбан
@dp.message_handler(is_admin=True, commands=["unban"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
	if not message.reply_to_message:
		await message.reply("Эта команда должна быть ответом на сообщение!")
		return

	await bot.unban_chat_member(chat_id=config.GROUP_ID, user_id=message.reply_to_message.from_user.id)
	await message.reply_to_message.reply("Пользователь разбанен!")

	await bot.send_message(message.from_user.id, "Вас разбанили в телеграм группе Royalty | IT. Вы можете снова вступить по ссылке - https://t.me/+z53BRLI5Ulk2ZjFi")

#Удаляет сообщение о новом пользователе в группе
@dp.message_handler(content_types=["new_chat_members"])
async def on_users_joined(message: types.Message):
	await message.delete()

#Удаляет сообщение о вышедшем из группы пользователя
@dp.message_handler(content_types=["left_chat_member"])
async def on_users_out(message: types.Message):
	await message.delete()

#Что-то типо фильтра запрещенных слов
#@dp.message_handler()
#async def filter_message(message: types.Message):
#	if 'gkj[jt ckjdj' in message.text:
#		await message.delete()

if __name__ == "__main__":
	print('Мб бот успешно запущен!')
	#asyncio.create_task(main())
	executor.start_polling(dp, skip_updates=True)


Консоль ошибок не выдает.
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 1
@serhiops
Python/JavaScript/C++
Ты прописал функцию main, но при этом ни разу ее не вызываешь, как оно будет работать по-твоему?
сначала добавь что-то такое:
async def on_startup(_):
     asyncio.create_task(main())

Эта функция будет выполнятся каждый раз при запуске бота.
И остается изменить последнюю строку кода:
executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы