mirror of
https://github.com/yawaflua/Easy_telegram_bot.git
synced 2026-02-04 10:24:17 +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