mirror of
https://github.com/yawaflua/Easy_telegram_bot.git
synced 2025-12-09 20:09:27 +02:00
Telegram bot
This commit is contained in:
8
telegram bot/bot.py
Normal file
8
telegram bot/bot.py
Normal 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
6
telegram bot/config.py
Normal 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>
|
||||
'''
|
||||
20
telegram bot/dispatcher.py
Normal file
20
telegram bot/dispatcher.py
Normal 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
37
telegram bot/filters.py
Normal 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
|
||||
2
telegram bot/handlers/__init__.py
Normal file
2
telegram bot/handlers/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import personal_actions
|
||||
from . import callbacks
|
||||
4
telegram bot/handlers/callbacks.py
Normal file
4
telegram bot/handlers/callbacks.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from aiogram import types
|
||||
from dispatcher import dp
|
||||
import config
|
||||
|
||||
28
telegram bot/handlers/personal_actions.py
Normal file
28
telegram bot/handlers/personal_actions.py
Normal 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)
|
||||
Reference in New Issue
Block a user