Romɑn
Vasiliy
ай, я ступил, там же None передается
Nikolay
Nikolay
https://github.com/Dolfik1/Funogram/blob/master/Funogram.TestBot/Program.fs
Nikolay
Как вспомню блин, как мы всем чатом апи продумывали, ужас :D
Nikolay
А, там ещё рыба писал на медиуме
Vasiliy
https://medium.com/@worldbeater/funogram-writing-telegram-bots-in-f-f27a873fa548
Nikolay
Он старый просто
Vasiliy
щит
Nikolay
Напишу ему чтоб обновил, если можно
Vasiliy
Чего и следовало ожидать: в продаже появились VR-очки Oculus Go с предзагруженной порнухой в рамках программы Porn in a Box: не надо искать источники (в официальном сторе Фейсбука для Okulus “взрослый” контент запрещен), не надо возиться с загрузкой - можно надеть очки и сразу потреблять. Такой пакет стоит, понятно, дороже, но как раз он способен подтолкнуть массовое приобретение очков; порнуха не раз за время существования интернета подталкивала прогресс ;)
“The Oculus Go is the perfect porn device” — отмечают специалисты по порноконтенту. Кажется, Цукербергу может светить очередное обвинение общественности, словно мало ему уже имеющихся. Добавка титула создателя идеального порнодевайса не улучшит его имидж... хотя смотря среди кого.
https://variety.com/2019/digital/news/oculus-go-porn-app-preloaded-1203130147/
Фил Ранжин
Vasiliy
Ха, если бы я знал, как это делается)
Vasiliy
Но если соображу, то напишу
Nikolay
module Program
open Funogram.Bot
/// Handles all Telegram events.
let update context =
context.Update.UpdateId
|> printfn "Received update: %i"
[<EntryPoint>]
let main _ =
startBot {
defaultConfig with
Token = "bot-token"
} update None |> Async.RunSynchronously
0
Nikolay
Попробуй так
Vasiliy
У меня тут вопрос в том, что есть функция update. Она принимает параметр на вход context.
А в main мы вызываем эту функцию, но параметром передаем значение None?
Nikolay
Nikolay
Вот так функция выгядит:
let startBot config updateArrived updatesArrived = ()
Nikolay
Ты в startBot передаёшь первым аргументом config, вторым функцию update, а третим None, вместо функции updatesArrived
Nikolay
updatesArrived используется, если тебе нужно пачками апдейты обрабатывать
Vasiliy
Ааа, да, все понял, теперь. startBot — это функция
Vasiliy
Vasiliy
@Dolfik немного упарываюсь. А в теории, можно же написать бота, который в определенное время будет сам писать в чат?
Nikolay
Vasiliy
Шикарно) спс
Ayrat
Ayrat
Я вот сегодня наговнякал пяток.
Hog
Фил Ранжин
Фил Ранжин
Но вообще впечатления конечно хорошие. Работать с F# кудаприятней. Если не считать пакета. И тулинга.
Hog
Пакет можно включить в тулинг. Поэтому только он.
Hog
Всё, что вы делаете руками - плохо. А вот дети у вас хорошие. ©️
Фил Ранжин
ну ещё у меня весьма мощная претензия к F, что он не разрешает одинаковые названия в разных неймспейсах
Hog
Vagif
Фил Ранжин
Дома буду - покажу. Чет он ныл на коллизии
Aleksandr
Он не разрешает модули и нэймспейсы с одинаковыми именами на одном уровне вложенности
Aleksandr
Но это не то же самое
Aleksandr
Поэтому сишарп наверное тоже не разрешит
Hog
Цлр
Aleksandr
Ну в цлр вообще неймспейсов нет
Hog
Неймспейс это ж метадата. Не?
Aleksandr
Неймспейс конкатенируется с наименованием типа на этапе лексического разбора
Aleksandr
Тут скорее всего конфликт в том как интерпретировать A.B.M()
Aleksandr
Это либо класс B в неймспейсе A
Aleksandr
Либо вложенный класс B в класс A
Hog
А модули ещё добавляют
Hog
Модуль-то во что компилируется? Статический класс?
Aleksandr
В статические классы, да, но в слр их нет
Aleksandr
static = abstract sealed
Hog
Не. Что-то не так. Может же быть тип и модуль с одним и тем же именем
Aleksandr
Тип и модуль - да
Aleksandr
Неймспейс и тип или модуль , возможно, нет
Hog
https://blogs.msdn.microsoft.com/ericlippert/2010/03/09/do-not-name-a-class-the-same-as-its-namespace-part-one/
Aleksandr
Это другое немного
Aleksandr
Я говорил про одинаковый уровень вложенности
Aleksandr
namespace System
{
namespace A {...}
class A {...}
}
Hog
Ну, я понял смысл, но не понимаю откуда коллизии :)
Vladislav
Фил Ранжин
Фил Ранжин
ну заебись, меня вымораживало назвать кучу разных модулей Types по разному
Hog
Но они же в разных неймспейсах
Hog
Открывай на 1 уровень выше и пиши A.Types, B.Types
Hog
Будет только понятнее!
Nikolay
А в F# есть билдер task?
Nikolay
Тут какой-то странный код:
https://github.com/fsprojects/FSharp.Data.GraphQL/blob/dev/src/FSharp.Data.GraphQL.Samples.GiraffeServer/HttpHandlers.fs#L26
Причём, если task убрать, то нормально компилируется
Vladislav
Nikolay
А зачем оно?
Nikolay
вместо Async.StartAsTask, или как там
x
монады
Андрей
в одном СЕ, но перформанс может получиться еще хуже чем с одними асинками