Telegram Bots
This bot is not normal
In Telegram, most URL uploaders and leechers have this 'boomerang' effect: you give them something, wether it's a Telegram file or a URL, they do their 'thing' and then they upload it to the chat, this is considered 'normal'. The first thing you need to know is that MF Shell is not a 'normal' bot, because this 'boomerang effect' does not exist, and this is because there are two ways to get the files back. The first one is the typical upload to the chat and the second one is sharing through the web server, also known as File-to-Link
MF Shell's main features
β Organize files in whatever way you want. Create folders, rename files (even in batch), delete files, extract ZIP, RAR, 7Z files, create 7Z files, and more
β Download content anywhere you want. Not just the typical Youtube or MEGA files, there's direct support from Google Drive files and folders, to android apps and even comics and manga
β Made for big jobs. MF Shell has a waitlist and queues system, queues can be cancelled or paused, you can modify a queue. The waitlist are a mean for rationing the computational resources used by the bot
β FTL on steroids. The web interface of the bot is very helpful for downloading massive amounts of content previously downloaded into the bot
Video tutorial
The guide can get very dense to read, this is why we have a tutorial video, showing off the basics of the bot
The video is just a mere introduction to understand the general use cases of the bot and a general workflow
The video barely scratches the surface, specially the basics, so after you whatch the video, keep reading the rest of the guide, and then go to the commands reference to search for what you need to do
The theory
In the bot, each user has its own directory (folder) were it can work, and inside that one, the user can create more subdirectories to group files and other subdirectories
Files and directories are both called resources, file system resources
There is a location (path) that is the current working directory (CWD). A user can change the CWD to go deeper or shallower in the structure. Also, each CWD has a parent path, except for the root "/", the root has no parent
If all of this sounds confusing, think about a tree upside down where each node (directory) has a different name
Looking around
To view the contents of the CWD you can run the '/ls' command like this:
/ls
The following image is an example of an '/ls' output
As you can see in this image, at the beggining of the message you can see the CWD path and for each row (each element) you can tell wether the element is a file or a folder just by looking at the icon before the name, but more importantly, the number before the icon is the index of the element. In MF Shell when selecting files or directories, you do not use the filename, instead, you use the index that the file has in the CWD
Knowing this, we can take a look at a specific location, for example, the 'stufffff' directory, occupying index no. 1:
/ls 1
Moving around
The '/ls' command is only useful for observing other elements, but looking at other paths does not mean that you changed your CWD
There are 2 commands that change your CWD: '/back' and '/cd'
The '/cd' command can change the CWD to a subdirectory:
/cd 1
And the '/back' command changes the CWD to the parent command:
/back
Using a single index of a file or directory as an argument in a command is called a 'Simple select'
The next chapter is about the selection types in MF Shell
In the previous chapter, we discussed about the basics of the File System in MF Shell
In this chapter we will talk about the selectors (also called selection tyes) and how we can select elements
There are 3 selection types:
β Simple select
β Range select
β Free select
All selection types can be used for managing queues or in file management
Basics
Form: 'N'
Where 'N' is an integer
In the context of file management, when N is positive or zero you are selecting an element that exists in the CWD, same goes for queue management
When 'N' is negative, what happens is that the selected element is a parent of the CWD (this does not applies to queue management), the selected parent depends on how far the number is from zero: you are going up N levels above the CWD
Real example
In the previous chapter we saw some examples of simple selectors while using '/ls' and '/cd' to learn about the file system, but let's see another example with the '/mv' command
The '/mv' command is used for moving files and directories and for simple renaming, it all depends on how you run it. Let's try renaming a file first:
/ls
/mv 3 new name.txt
The file has been renamed, now we will see how to move it, but first, we have to run '/ls' again, because since the name of the file changed and due to the fact that there are other files there's a possibility that the index of our target file changed in the CWD
/ls
As we can see in the picture, the file changed it's position from 3 to 4. Knwong this, we can now run '/mv':
/mv 4 1
If we run '/ls' to look at that specific directory, we will see that the file is now inside
/ls 1
If 'N' is negative, it will select a parent of the CWD: it will go up N levels above the CWD
Our CWD right now is '/today/videos/nice/here/' so if we run:
/cd -2
What happened here is that we changed our CWD from '/today/videos/nice/here/' to '/today/videos/', and if you noticed, we moved 2 levels above the CWD
Basics
Forms: 'N-M' or 'N-Mr'
Where 'N' and 'M' are positive integers and/or zero
'N' is a starting index (or offset), 'M' is the quantity of elements to select from 'N' and the 'r' is used for selecting in reverse
'N' is safe to be zero, since it can be an existing first element in whatever situation, but when 'M' is zero, it selects all elements starting with 'N'
In the context of file management, the range select only affects the elements present in the CWD, it has nothing to do with selecting parents of the CWD
The range select is very important, there will be very obvious situations where you have to select large groups of (consecutive) elements, like, for example, uploading files using the '/upload' command, or moving large groups of files using '/mv' or delete files in range using '/rm'
Pseudo example
Let's suppose that we have 16 elements in front of us, it doesn't matter if it's in a queue or selecting files from a CWD:
'3-5': It selects the elements 3,4,5,6 and 7 because it has index 3 as the offset and it selects 5 elements from there
'11-2': It selects the elements 11 and 12 because 11 is the starting point or offset and 2 elements are selected
Notice how the elements are normally selected. Let's see a few more examples:
'4-0': It selects all elements starting from the element no. 4. The special rule of 'M' being zero and selecting everything is being applied here
'0-0': Using the special rule of 'M' being zero, combined with 'N' being zero, has a result of selecting all the elements
'9-4r': The starting point is index 9, and four elements are being selected, but they are being selected in reverse and this is because of the reverse modifier. The reverse modifier for range selections has very specific and rare use cases
Real example
Let's see a real example of range select using the '/mv' command. This is how the CWD looks like:
/ls
What we will do is move the last 3 files to that directory called 'watch later':
/mv 5-3 0
/ls 0
Since the goal was to move the last 3 files, other ways of range selecting for this particular case would have been '5-0' or '7-3r'
Basics
Form: 'A,B,C,D,...,Z'
All elements are positive integers and/or zero separated by comma with no space in between
The elements selected must be unique: an element is only selected once
The amount of elements selected cannot exceed the amount of elements available for selecion
When working with files and directories, the free select only works with the elements present in the CWD, and (just like the range select) it has nothing to do with selecting parents of the CWD
The main adavantage of the free select is that you can select multiple, non-consecutive elements in a specific order. This is important because there are commands where the order in which elements are selected has an influence on the results. There are also situations where the elements that need to be selected for a certain task are not positioned consecutively
Pseudo example
Let's suppose that we have 8 elements, in a CWD or a queue:
'1,3,6,7': Selects the elements 1,3,6 and 7, non-consecutive elements in that order
'4,5,2': Selects elements 4,5 and 2 in that specific order
Real example
Let's now see a real example of a free select using the '/upload' command. This is how the CWD looks like:
/ls
What we will do is upload the elements (files) 2 and 0 in that order, this is the result:
/upload 2,0
As you can see in the image, the first file to be uploaded was no. 2 and then the file no. 1
In addition to the file management tools provided, the bot also has commands for downloading content to the bot, a command for uploading content from the bot to your chat with the bot ('/upload'), and a command for sharing your content in the bot through web, similar to an FTL ('/share')
From Telegram to the bot
Of course, Telegram files can be downloaded to the bot, this is usually done with the /download command replying to a file in the chat
In case you did not know: not all files in Telegram have a filename, specially photos, so if a file does not exist, the bot will generate a name automatically. For more information, read the commands reference
The web downloaders
There are 5 website and platform downloaders in this bot: /wget, /gddl, /megadl, /freak, and /video
In the specific case of /wget, /video and /freak, they have a list of compatible websites that are directly supported
The /wget command is a general purposes downloader, so it can also try to download files from unsupported websites, the other web downloaders cannot do this, they strictly download only if the website is supported by them. For more information about each web downloader, read the commands reference
The supported websites and platforms
You should know that just because a website or a platform is directly supported does not mean that any form of a link that leads to the content is compatible
For example, the '/wget' command supports Mediafire file links directly, but that doesn't mean that you can put any kind of Mediafire link that leads to a file, you have to put a specific type of link, in this case it's the link of the page of the file, which is extremely easy to get because it's the first link you see of the file that you want to download. The web downloaders expect compatible and supported website links in a specific way (basically, page links only) because they work based on the link's form to get the file, so stop (if you are used to it) complicating things using IDM or your browser's devtools when a website is already supported directly by a web downloader
Where are the files?
At the beggining of the guide we explained that in MF Shell the 'boomerang effect' very common in URL uploaders and leechers does not exist. When you download a file from a website or from Telegram, the file will be downloaded into the bot, at the CWD. You have to decide how to pull the files out
Telegram uploads
Probably the slowest way to pull out the files from the bot, because if you intend to download them to your device, you have to upload the files first to your chat with the bot in Telegram, and then, download the files to your device from Telegram. However, if you intend to use the files in another bot (Like PRO Mail), it's a whole different story
Uploading from the CWD to your chat with the bot is handled by the /upload command. For more information, read about it at the commands reference
Web sharing
This is the fastest way of pulling the files ut of the bot, because it's a direct download from the bot's server: There's no need to go through Telegram
Activating or deactivating content sharing is done using the /share command. For more information, read about it at the commands reference
...