Python telegram.Message() Examples
The following are 30
code examples of telegram.Message().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
telegram
, or try the search function
.
Example #1
Source File: users.py From SkittBot with GNU General Public License v3.0 | 8 votes |
def log_user(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] msg = update.effective_message # type: Optional[Message] sql.update_user(msg.from_user.id, msg.from_user.username, chat.id, chat.title) if msg.reply_to_message: sql.update_user(msg.reply_to_message.from_user.id, msg.reply_to_message.from_user.username, chat.id, chat.title) if msg.forward_from: sql.update_user(msg.forward_from.id, msg.forward_from.username)
Example #2
Source File: global_bans.py From SkittBot with GNU General Public License v3.0 | 7 votes |
def enforce_gban(bot: Bot, update: Update): # Not using @restrict handler to avoid spamming - just ignore if cant gban. if sql.does_chat_gban(update.effective_chat.id) and update.effective_chat.get_member(bot.id).can_restrict_members: user = update.effective_user # type: Optional[User] chat = update.effective_chat # type: Optional[Chat] msg = update.effective_message # type: Optional[Message] if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id) if msg.new_chat_members: new_members = update.effective_message.new_chat_members for mem in new_members: check_and_ban(update, mem.id) if msg.reply_to_message: user = msg.reply_to_message.from_user # type: Optional[User] if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id, should_message=False)
Example #3
Source File: __main__.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def get_settings(update, context): chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] args = msg.text.split(None, 1) # ONLY send settings in PM if chat.type != chat.PRIVATE: if is_user_admin(chat, user.id): text = tl(update.effective_message, "Klik di sini untuk mendapatkan pengaturan obrolan ini, serta milik Anda.") msg.reply_text(text, reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton(text="Pengaturan", url="t.me/{}?start=stngs_{}".format( context.bot.username, chat.id))]])) # else: # text = tl(update.effective_message, "Klik di sini untuk memeriksa pengaturan Anda.") else: send_settings(chat.id, user.id, True)
Example #4
Source File: blacklist.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def add_blacklist(bot: Bot, update: Update): msg = update.effective_message # type: Optional[Message] chat = update.effective_chat # type: Optional[Chat] words = msg.text.split(None, 1) if len(words) > 1: text = words[1] to_blacklist = list(set(trigger.strip() for trigger in text.split("\n") if trigger.strip())) for trigger in to_blacklist: sql.add_to_blacklist(chat.id, trigger.lower()) if len(to_blacklist) == 1: msg.reply_text("Added <code>{}</code> to the blacklist!".format(html.escape(to_blacklist[0])), parse_mode=ParseMode.HTML) else: msg.reply_text( "Added <code>{}</code> triggers to the blacklist.".format(len(to_blacklist)), parse_mode=ParseMode.HTML) else: msg.reply_text("Tell me which words you would like to add to the blacklist.")
Example #5
Source File: welcome.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def set_goodbye(update, context) -> str: chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] # If user is not set text and not reply a message if not msg.reply_to_message: if len(msg.text.split()) == 1: send_message(update.effective_message, tl(update.effective_message, "Anda harus memberikan isi dalam pesan selamat datang!\nKetik `/welcomehelp` untuk beberapa bantuan pada welcome"), parse_mode="markdown") return "" text, data_type, content, buttons = get_welcome_type(msg) if data_type is None: send_message(update.effective_message, tl(update.effective_message, "Anda tidak menentukan apa yang harus dibalas!")) return "" sql.set_custom_gdbye(chat.id, content, text, data_type, buttons) send_message(update.effective_message, tl(update.effective_message, "Berhasil mengatur pesan selamat tinggal kustom!")) return "<b>{}:</b>" \ "\n#SET_GOODBYE" \ "\n<b>Admin:</b> {}" \ "\nSet a goodbye message.".format(html.escape(chat.title), mention_html(user.id, user.first_name))
Example #6
Source File: warns.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def set_warn_limit(bot: Bot, update: Update, args: List[str]) -> str: chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] if args: if args[0].isdigit(): if int(args[0]) < 3: msg.reply_text("The minimum warn limit is 3!") else: sql.set_warn_limit(chat.id, int(args[0])) msg.reply_text("Updated the warn limit to {}".format(args[0])) return "<b>{}:</b>" \ "\n#SET_WARN_LIMIT" \ "\n<b>Admin:</b> {}" \ "\nSet the warn limit to <code>{}</code>".format(html.escape(chat.title), mention_html(user.id, user.first_name), args[0]) else: msg.reply_text("Give me a number as an arg!") else: limit, soft_warn = sql.get_warn_setting(chat.id) msg.reply_text("The current warn limit is {}".format(limit)) return ""
Example #7
Source File: warns.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def reply_filter(bot: Bot, update: Update) -> str: chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] chat_warn_filters = sql.get_chat_warn_triggers(chat.id) to_match = extract_text(message) if not to_match: return "" for keyword in chat_warn_filters: pattern = r"( |^|[^\w])" + re.escape(keyword) + r"( |$|[^\w])" if re.search(pattern, to_match, flags=re.IGNORECASE): user = update.effective_user # type: Optional[User] warn_filter = sql.get_warn_filter(chat.id, keyword) return warn(user, chat, warn_filter.reply, message) return ""
Example #8
Source File: userinfo.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def about_me(update, context): message = update.effective_message # type: Optional[Message] args = context.args user_id = extract_user(message, args) if user_id and user_id != "error": user = bot.get_chat(user_id) else: user = message.from_user info = sql.get_user_me_info(user.id) if info: send_message(update.effective_message, "*{}*:\n{}".format(user.first_name, escape_markdown(info)), parse_mode=ParseMode.MARKDOWN) elif message.reply_to_message: username = message.reply_to_message.from_user.first_name send_message(update.effective_message, username + tl(update.effective_message, " belum mengatur pesan info tentang diri mereka!")) else: send_message(update.effective_message, tl(update.effective_message, "Anda belum mengatur pesan info tentang diri Anda!"))
Example #9
Source File: log_channel.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def loggable(func): @wraps(func) def log_action(bot: Bot, update: Update, *args, **kwargs): result = func(bot, update, *args, **kwargs) chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] if result: if chat.type == chat.SUPERGROUP and chat.username: result += "\n<b>Link:</b> " \ "<a href=\"http://telegram.me/{}/{}\">click here</a>".format(chat.username, message.message_id) log_chat = sql.get_chat_log_channel(chat.id) if log_chat: send_log(bot, log_chat, chat.id, result) elif result == "": pass else: LOGGER.warning("%s was set as loggable, but had no return statement.", func) return result return log_action
Example #10
Source File: __main__.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def migrate_chats(bot: Bot, update: Update): msg = update.effective_message # type: Optional[Message] if msg.migrate_to_chat_id: old_chat = update.effective_chat.id new_chat = msg.migrate_to_chat_id elif msg.migrate_from_chat_id: old_chat = msg.migrate_from_chat_id new_chat = update.effective_chat.id else: return LOGGER.info("Migrating from %s, to %s", str(old_chat), str(new_chat)) for mod in MIGRATEABLE: mod.__migrate__(old_chat, new_chat) LOGGER.info("Successfully migrated!") raise DispatcherHandlerStop
Example #11
Source File: warns.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def reset_warns(bot: Bot, update: Update, args: List[str]) -> str: message = update.effective_message # type: Optional[Message] chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] user_id = extract_user(message, args) if user_id: sql.reset_warns(user_id, chat.id) message.reply_text("Warnings have been reset!") warned = chat.get_member(user_id).user return "<b>{}:</b>" \ "\n#RESETWARNS" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {} (<code>{}</code>)".format(html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(warned.id, warned.first_name), warned.id) else: message.reply_text("No user has been designated!") return ""
Example #12
Source File: userinfo.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def about_bio(update, context): message = update.effective_message # type: Optional[Message] args = context.args user_id = extract_user(message, args) if user_id and user_id != "error": user = bot.get_chat(user_id) else: user = message.from_user info = sql.get_user_bio(user.id) if info: send_message(update.effective_message, "*{}*:\n{}".format(user.first_name, escape_markdown(info)), parse_mode=ParseMode.MARKDOWN) elif message.reply_to_message: username = user.first_name send_message(update.effective_message, tl(update.effective_message, "{} belum memiliki pesan tentang dirinya sendiri!").format(username)) else: send_message(update.effective_message, tl(update.effective_message, "Anda belum memiliki bio set tentang diri Anda!"))
Example #13
Source File: userinfo.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def set_about_bio(update, context): message = update.effective_message # type: Optional[Message] sender = update.effective_user # type: Optional[User] if message.reply_to_message: repl_message = message.reply_to_message user_id = repl_message.from_user.id if user_id == message.from_user.id: send_message(update.effective_message, tl(update.effective_message, "Ha, Anda tidak dapat mengatur bio Anda sendiri! Anda berada di bawah belas kasihan orang lain di sini...")) return elif user_id == bot.id and sender.id not in SUDO_USERS: send_message(update.effective_message, tl(update.effective_message, "Umm ... yah, saya hanya mempercayai pengguna sudo untuk mengatur bio saya.")) return text = message.text bio = text.split(None, 1) # use python's maxsplit to only remove the cmd, hence keeping newlines. if len(bio) == 2: if len(bio[1]) < MAX_MESSAGE_LENGTH // 4: sql.set_user_bio(user_id, bio[1]) send_message(update.effective_message, tl(update.effective_message, "Bio {} diperbarui!").format(repl_message.from_user.first_name)) else: send_message(update.effective_message, tl(update.effective_message, "Biografi harus di bawah {} karakter! Anda mencoba mengatur {}.").format( MAX_MESSAGE_LENGTH // 4, len(bio[1]))) else: send_message(update.effective_message, tl(update.effective_message, "Balas pesan seseorang untuk mengatur bio mereka!"))
Example #14
Source File: blacklist.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def blacklist(bot: Bot, update: Update, args: List[str]): msg = update.effective_message # type: Optional[Message] chat = update.effective_chat # type: Optional[Chat] all_blacklisted = sql.get_chat_blacklist(chat.id) filter_list = BASE_BLACKLIST_STRING if len(args) > 0 and args[0].lower() == 'copy': for trigger in all_blacklisted: filter_list += "<code>{}</code>\n".format(html.escape(trigger)) else: for trigger in all_blacklisted: filter_list += " - <code>{}</code>\n".format(html.escape(trigger)) split_text = split_message(filter_list) for text in split_text: if text == BASE_BLACKLIST_STRING: msg.reply_text("There are no blacklisted messages here!") return msg.reply_text(text, parse_mode=ParseMode.HTML)
Example #15
Source File: welcome.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def set_welcome(update, context) -> str: chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] # If user is not set text and not reply a message if not msg.reply_to_message: if len(msg.text.split()) == 1: send_message(update.effective_message, tl(update.effective_message, "Anda harus memberikan isi dalam pesan selamat datang!\nKetik `/welcomehelp` untuk beberapa bantuan pada welcome"), parse_mode="markdown") return "" text, data_type, content, buttons = get_welcome_type(msg) if data_type is None: send_message(update.effective_message, tl(update.effective_message, "Anda tidak menentukan apa yang harus dibalas!")) return "" sql.set_custom_welcome(chat.id, content, text, data_type, buttons) send_message(update.effective_message, tl(update.effective_message, "Berhasil mengatur pesan sambutan kustom!")) return "<b>{}:</b>" \ "\n#SET_WELCOME" \ "\n<b>Admin:</b> {}" \ "\nSet a welcome message.".format(html.escape(chat.title), mention_html(user.id, user.first_name))
Example #16
Source File: welcome.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def security_mute(update, context): args = context.args chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] getcur, extra_verify, cur_value, timeout, timeout_mode, cust_text = sql.welcome_security(chat.id) if len(args) >= 1: var = args[0] if var[:1] == "0": mutetime = "0" sql.set_welcome_security(chat.id, getcur, extra_verify, "0", timeout, timeout_mode, cust_text) text = tl(update.effective_message, "Setiap member baru akan di bisukan selamanya sampai dia menekan tombol selamat datang!") else: mutetime = extract_time(message, var) if mutetime == "": return sql.set_welcome_security(chat.id, getcur, extra_verify, str(var), timeout, timeout_mode, cust_text) text = tl(update.effective_message, "Setiap member baru akan di bisukan selama {} sampai dia menekan tombol selamat datang!").format(var) send_message(update.effective_message, text) else: if str(cur_value) == "0": send_message(update.effective_message, tl(update.effective_message, "Pengaturan saat ini: member baru akan di bisukan selamanya sampai dia menekan tombol selamat datang!")) else: send_message(update.effective_message, tl(update.effective_message, "Pengaturan saat ini: member baru akan di bisukan selama {} sampai dia menekan tombol selamat datang!").format(cur_value))
Example #17
Source File: welcome.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def set_welcome(bot: Bot, update: Update) -> str: chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] text, data_type, content, buttons = get_welcome_type(msg) if data_type is None: msg.reply_text("You didn't specify what to reply with!") return "" sql.set_custom_welcome(chat.id, content or text, data_type, buttons) msg.reply_text("Successfully set custom welcome message!") return "<b>{}:</b>" \ "\n#SET_WELCOME" \ "\n<b>Admin:</b> {}" \ "\nSet the welcome message.".format(html.escape(chat.title), mention_html(user.id, user.first_name))
Example #18
Source File: welcome.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def set_goodbye(bot: Bot, update: Update) -> str: chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] text, data_type, content, buttons = get_welcome_type(msg) if data_type is None: msg.reply_text("You didn't specify what to reply with!") return "" sql.set_custom_gdbye(chat.id, content or text, data_type, buttons) msg.reply_text("Successfully set custom goodbye message!") return "<b>{}:</b>" \ "\n#SET_GOODBYE" \ "\n<b>Admin:</b> {}" \ "\nSet the goodbye message.".format(html.escape(chat.title), mention_html(user.id, user.first_name))
Example #19
Source File: userinfo.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def about_me(bot: Bot, update: Update, args: List[str]): message = update.effective_message # type: Optional[Message] user_id = extract_user(message, args) if user_id: user = bot.get_chat(user_id) else: user = message.from_user info = sql.get_user_me_info(user.id) if info: update.effective_message.reply_text("*{}*:\n{}".format(user.first_name, escape_markdown(info)), parse_mode=ParseMode.MARKDOWN) elif message.reply_to_message: username = message.reply_to_message.from_user.first_name update.effective_message.reply_text(username + " hasn't set an info message about themselves yet!") else: update.effective_message.reply_text("You haven't set an info message about yourself yet!")
Example #20
Source File: userinfo.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def about_bio(bot: Bot, update: Update, args: List[str]): message = update.effective_message # type: Optional[Message] user_id = extract_user(message, args) if user_id: user = bot.get_chat(user_id) else: user = message.from_user info = sql.get_user_bio(user.id) if info: update.effective_message.reply_text("*{}*:\n{}".format(user.first_name, escape_markdown(info)), parse_mode=ParseMode.MARKDOWN) elif message.reply_to_message: username = user.first_name update.effective_message.reply_text("{} hasn't had a message set about themselves yet!".format(username)) else: update.effective_message.reply_text("You haven't had a bio set about yourself yet!")
Example #21
Source File: userinfo.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def set_about_bio(bot: Bot, update: Update): message = update.effective_message # type: Optional[Message] sender = update.effective_user # type: Optional[User] if message.reply_to_message: repl_message = message.reply_to_message user_id = repl_message.from_user.id if user_id == message.from_user.id: message.reply_text("Ha, you can't set your own bio! You're at the mercy of others here...") return elif user_id == bot.id and sender.id not in SUDO_USERS: message.reply_text("Erm... yeah, I only trust sudo users to set my bio.") return text = message.text bio = text.split(None, 1) # use python's maxsplit to only remove the cmd, hence keeping newlines. if len(bio) == 2: if len(bio[1]) < MAX_MESSAGE_LENGTH // 4: sql.set_user_bio(user_id, bio[1]) message.reply_text("Updated {}'s bio!".format(repl_message.from_user.first_name)) else: message.reply_text( "A bio needs to be under {} characters! You tried to set {}.".format( MAX_MESSAGE_LENGTH // 4, len(bio[1]))) else: message.reply_text("Reply to someone's message to set their bio!")
Example #22
Source File: global_bans.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def enforce_gban(update, context): # Not using @restrict handler to avoid spamming - just ignore if cant gban. if sql.does_chat_gban(update.effective_chat.id) and update.effective_chat.get_member(context.bot.id).can_restrict_members: user = update.effective_user # type: Optional[User] chat = update.effective_chat # type: Optional[Chat] msg = update.effective_message # type: Optional[Message] if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id) if msg.new_chat_members: new_members = update.effective_message.new_chat_members for mem in new_members: check_and_ban(update, mem.id) if msg.reply_to_message: user = msg.reply_to_message.from_user # type: Optional[User] if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id, should_message=False)
Example #23
Source File: helpers.py From BotListBot with MIT License | 6 votes |
def try_delete_after( job_queue: JobQueue, messages: Union[List[Union[Message, int]], Union[Message, int]], delay: Union[float, int], ): if isinstance(messages, (Message, int)): _messages = [messages] else: _messages = messages @run_async def delete_messages(*args, **kwargs): # noinspection PyTypeChecker bot: BotListBot = job_queue.bot for m in _messages: bot.delete_message(m.chat_id, m.message_id, timeout=10, safe=True) job_queue.run_once(delete_messages, delay, name="try_delete_after")
Example #24
Source File: log_channel.py From EmiliaHikari with GNU General Public License v3.0 | 6 votes |
def loggable(func): @wraps(func) def log_action(update, context, *args, **kwargs): result = func(update, context, *args, **kwargs) chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] if result: if chat.type == chat.SUPERGROUP and chat.username: result += "\n<b>Link:</b> " \ "<a href=\"http://telegram.me/{}/{}\">klik disini</a>".format(chat.username, message.message_id) log_chat = sql.get_chat_log_channel(chat.id) if log_chat: try: send_log(context.bot, log_chat, chat.id, result) except Unauthorized: sql.stop_chat_logging(chat.id) elif result == "": pass else: LOGGER.warning("%s was set as loggable, but had no return statement.", func) return result return log_action
Example #25
Source File: blacklist.py From SkittBot with GNU General Public License v3.0 | 6 votes |
def del_blacklist(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] message = update.effective_message # type: Optional[Message] to_match = extract_text(message) if not to_match: return chat_filters = sql.get_chat_blacklist(chat.id) for trigger in chat_filters: pattern = r"( |^|[^\w])" + re.escape(trigger) + r"( |$|[^\w])" if re.search(pattern, to_match, flags=re.IGNORECASE): try: message.delete() except BadRequest as excp: if excp.message == "Message to delete not found": pass else: LOGGER.exception("Error while deleting blacklist message.") break
Example #26
Source File: warns.py From SkittBot with GNU General Public License v3.0 | 5 votes |
def set_warn_strength(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] msg = update.effective_message # type: Optional[Message] if args: if args[0].lower() in ("on", "yes"): sql.set_warn_strength(chat.id, False) msg.reply_text("Too many warns will now result in a ban!") return "<b>{}:</b>\n" \ "<b>Admin:</b> {}\n" \ "Has enabled strong warns. Users will be banned.".format(html.escape(chat.title), mention_html(user.id, user.first_name)) elif args[0].lower() in ("off", "no"): sql.set_warn_strength(chat.id, True) msg.reply_text("Too many warns will now result in a kick! Users will be able to join again after.") return "<b>{}:</b>\n" \ "<b>Admin:</b> {}\n" \ "Has disabled strong warns. Users will only be kicked.".format(html.escape(chat.title), mention_html(user.id, user.first_name)) else: msg.reply_text("I only understand on/yes/no/off!") else: limit, soft_warn = sql.get_warn_setting(chat.id) if soft_warn: msg.reply_text("Warns are currently set to *kick* users when they exceed the limits.", parse_mode=ParseMode.MARKDOWN) else: msg.reply_text("Warns are currently set to *ban* users when they exceed the limits.", parse_mode=ParseMode.MARKDOWN) return ""
Example #27
Source File: warns.py From SkittBot with GNU General Public License v3.0 | 5 votes |
def remove_warn_filter(bot: Bot, update: Update): chat = update.effective_chat # type: Optional[Chat] msg = update.effective_message # type: Optional[Message] args = msg.text.split(None, 1) # use python's maxsplit to separate Cmd, keyword, and reply_text if len(args) < 2: return extracted = split_quotes(args[1]) if len(extracted) < 1: return to_remove = extracted[0] chat_filters = sql.get_chat_warn_triggers(chat.id) if not chat_filters: msg.reply_text("No warning filters are active here!") return for filt in chat_filters: if filt == to_remove: sql.remove_warn_filter(chat.id, to_remove) msg.reply_text("Yep, I'll stop warning people for that.") raise DispatcherHandlerStop msg.reply_text("That's not a current warning filter - run /warnlist for all active warning filters.")
Example #28
Source File: contributions.py From BotListBot with MIT License | 5 votes |
def extract_bot_mentions(message: TelegramMessage): text = message.text matches = re.findall(settings.REGEX_BOT_IN_TEXT, text) pprint(matches) # If it ends in "bot", we can be sure it's a bot. # Other ones will be thrown away, assuming that we already have all the verified bots
Example #29
Source File: markdownformatter.py From BotListBot with MIT License | 5 votes |
def send_or_edit(self, chat_id, text, to_edit=None, **kwargs): mid = to_edit if isinstance(to_edit, Message): mid = to_edit.message_id try: if to_edit: return self.bot.edit_message_text( text, chat_id=chat_id, message_id=mid, **self._set_defaults(kwargs) ) return self.send_message(chat_id, text=text, **self._set_defaults(kwargs)) except BadRequest as e: if 'not modified' in e.message.lower(): pass else: return self.send_message(chat_id, text=text, **self._set_defaults(kwargs))
Example #30
Source File: admin.py From SkittBot with GNU General Public License v3.0 | 5 votes |
def promote(bot: Bot, update: Update, args: List[str]) -> str: chat_id = update.effective_chat.id message = update.effective_message # type: Optional[Message] chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] user_id = extract_user(message, args) if not user_id: message.reply_text("This user is ded mate.") return "" user_member = chat.get_member(user_id) if user_member.status == 'administrator' or user_member.status == 'creator': message.reply_text("Am I supposed to give them a second star or something?") return "" if user_id == bot.id: message.reply_text("If only I could do this to myself ;_;") return "" # set same perms as bot - bot can't assign higher perms than itself! bot_member = chat.get_member(bot.id) bot.promoteChatMember(chat_id, user_id, can_change_info=bot_member.can_change_info, can_post_messages=bot_member.can_post_messages, can_edit_messages=bot_member.can_edit_messages, can_delete_messages=bot_member.can_delete_messages, can_invite_users=bot_member.can_invite_users, can_restrict_members=bot_member.can_restrict_members, can_pin_messages=bot_member.can_pin_messages, can_promote_members=bot_member.can_promote_members) message.reply_text("Successfully promoted!") return "<b>{}:</b>" \ "\n#PROMOTED" \ "\n<b>Admin:</b> {}" \ "\n<b>User:</b> {}".format(html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(user_member.user.id, user_member.user.first_name))