Telegram bot

This commit is contained in:
Dima YaFlay
2021-11-03 00:52:37 +03:00
committed by GitHub
parent ff54a8c267
commit 1977814eb2
7 changed files with 105 additions and 0 deletions

8
telegram bot/bot.py Normal file
View File

@@ -0,0 +1,8 @@
# https://github.com/yaflay
# file for starting bot
from aiogram import executor
from dispatcher import dp
import handlers
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=False)

6
telegram bot/config.py Normal file
View File

@@ -0,0 +1,6 @@
# group ids or account ids can be retrieved with @username_to_id_bot
'''
BOT_TOKEN='<bot_token>'
BOT_OWNER=<owner_id>
CHANNEL_ID=<channel_id>
'''

View File

@@ -0,0 +1,20 @@
import logging
from aiogram import Bot, Dispatcher
from filters import IsOwnerFilter, IsAdminFilter, MemberCanRestrictFilter
import config
# Configure logging
logging.basicConfig(level=logging.INFO)
# prerequisites
if not config.BOT_TOKEN:
exit("No token provided")
# init
bot = Bot(token=config.BOT_TOKEN, parse_mode="HTML")
dp = Dispatcher(bot)
# activate filters
dp.filters_factory.bind(IsOwnerFilter)
dp.filters_factory.bind(IsAdminFilter)
dp.filters_factory.bind(MemberCanRestrictFilter)

37
telegram bot/filters.py Normal file
View File

@@ -0,0 +1,37 @@
from aiogram import types
from aiogram.dispatcher.filters import BoundFilter
import config
class IsOwnerFilter(BoundFilter):
key = "is_owner"
def __init__(self, is_owner):
self.is_owner = is_owner
async def check(self, message: types.Message):
return message.from_user.id == config.BOT_OWNER
class IsAdminFilter(BoundFilter):
key = "is_admin"
def __init__(self, is_admin: bool):
self.is_admin = is_admin
async def check(self, message: types.Message):
member = await message.bot.get_chat_member(message.chat.id, message.from_user.id)
return member.is_chat_admin() == self.is_admin
class MemberCanRestrictFilter(BoundFilter):
key = 'member_can_restrict'
def __init__(self, member_can_restrict: bool):
self.member_can_restrict = member_can_restrict
async def check(self, message: types.Message):
member = await message.bot.get_chat_member(message.chat.id, message.from_user.id)
return (member.is_chat_creator() or member.can_restrict_members) == self.member_can_restrict

View File

@@ -0,0 +1,2 @@
from . import personal_actions
from . import callbacks

View File

@@ -0,0 +1,4 @@
from aiogram import types
from dispatcher import dp
import config

View File

@@ -0,0 +1,28 @@
from aiogram import types
from dispatcher import dp
import config
@dp.message_handler(is_owner=True, commands=['setlink'])
async def setlink_command(message: types.Message):
with open('link.txt', 'w') as f:
f.write(message.text.replpace('/setlink ', '').strip())
f.close()
await message.answer('Link has been created')
#
@dp.message_handler(is_owner=True, commands=["getlink"])
async def getlink_command(message: types.Message):
with open('link.txt', 'r') as f:
content = f.readlines()
f.close()
await message.answer('Link: {}'.format(content[0].strip()))
@dp.message_handler(commands="test_buttons")
async def cmd_buttons(message: types.Message):
keyboard = types.ReplyKeyboardMarkup()
button_1 = types.KeyboardButton(text="tested buttons⚠")
keyboard.add(button_1)
button_2 = "tested buttons ⚠"
keyboard.add(button_2)
await message.answer("Tested buttons", reply_markup=keyboard)